LoginSignup
33
26

More than 5 years have passed since last update.

Elasticsearchで部分一致を検索する。

Last updated at Posted at 2016-03-15

SQLで言うところのlike文をElasticsearchで実現しようと思った。
term, matchを使えばできるかと思ったがうまくいかない。fuzzy関連もどうも用途が違う。
そんなこんなでちょっとめんどくさかったので共有。

実行環境

  • Elasticsearch 1.7.3

Queryで部分一致

boolクエリの中でワイルドカードを使って検索する。

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "FIELD": {
              "name": "*hoge*"
            }
          }
        }
      ]
    }
  }
}

これで「hoge」という文字列がnameプロパティに含まれているものを取ってくることができる。

Filterで部分一致

regexpクエリで正規表現が使えるので、無理矢理検索する。

{
  "post_filter": {
    "regexp" : {
      "comment" : ".*fuga.*"
    }
  }
}

今回はcommentプロパティが「fuga」という文字列を含んでいるものを取得してくる。

感想

多分だけれども、もっと簡単にできる気がしている。

33
26
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
26