Elasticsearchの使い方メモ


数年前にElasticsearchを利用していた頃の使いかたメモが見つかったので記事にしておきます。
以下例ではElasticsearchには商品ID(product_id)も持つ商品情報が格納されているものとします。

ID指定で1件だけ検索するクエリ

単純にproduct_idを指定するだけです。

{
  "query": {
    "match": {
      "product_id": "123"
    }
  }
}

ID指定で複数件、順序を指定して検索するクエリ

複数件の検索をします。取得する順序もweightで指定します。
weightが大きい方が上位に取得されます。

{
  "query": {
    "function_score": {
      "query": {
        "bool":{
          "should":[
            {"match": {"product_id": "123"}},
            {"match": {"product_id": "323"}},
            {"match": {"product_id": "223"}}
          ]
        }
      },
      "functions": [
        {
          "filter": { "product_id": { "product_id": "123" } },
          "weight": 3
        },
        {
          "filter": { "product_id": { "product_id": "323" } },
          "weight": 2
        },
        {
          "filter": { "product_id": { "product_id": "223" } },
          "weight": 1
        }
      ]
    }
  }
}

※メモ
shouldはORの意味合いがあります。

ID指定で複数件削除するクエリ

シンプルです。

{
  "query": {
    "bool":{
      "should":[
        {"match": {"product_id": "123"}},
        {"match": {"product_id": "223"}},
        {"match": {"product_id": "323"}}
      ]
    }
  }
}