サーチ…


前書き

検索APIを使用すると、検索クエリを実行し、クエリに一致する検索ヒットを戻すことができます。クエリは、単純なクエリ文字列をパラメータとして使用するか、またはリクエスト本文を使用して提供できます。

ルーティング

検索を実行すると、すべてのインデックス/インデックスシャードにブロードキャストされます(レプリカ間のラウンドロビン)。どのシャードが検索されるかは、ルーティングパラメータを指定することで制御できます。たとえば、ツイートのインデックスを作成する場合、ルーティング値にはユーザー名を使用できます。

curl -XPOST 'localhost:9200/twitter/tweet?routing=kimchy&pretty' -d'
{
    "user" : "kimchy",
    "postDate" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}'

リクエストボディを使用して検索する

検索DSLを使用してelasticsearchで検索を行うこともできます。検索要求本体内のquery要素によって、Query DSLを使用してクエリを定義することができます。

GET /my_index/type/_search
{
    "query" : {
        "term" : { "field_to_search" : "search_item" }
    }
}

マルチ検索

multi_searchオプションを使うと、一度に複数のフィールドでクエリを検索することができます。

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "text to search", 
      "fields": [ "field_1", "field_2" ] 
    }
  }
}

ブースト演算子(^)を使用して特定のフィールドのスコアを上げたり、フィールド名(*)にワイルドカードを使用することもできます

GET /_search
    {
      "query": {
        "multi_match" : {
          "query":    "text to search", 
          "fields": [ "field_1^2", "field_2*" ] 
        }
      }
    }

URI検索、ハイライト

検索要求は、要求パラメータを提供することによってURIを使用して純粋に実行することができる。このモードを使用して検索を実行すると、すべての検索オプションが表示されるわけではありませんが、すばやく「カールテスト」に便利です。

GET Index/type/_search?q=field:value

提供されるもう1つの便利な機能は、ドキュメントの一致ヒットを強調表示することです。

GET /_search
{
    "query" : {
        "match": { "field": "value" }
    },
    "highlight" : {
        "fields" : {
            "content" : {}
        }
    }
}

上記の場合、検索ヒットごとに特定のフィールドが強調表示されます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow