English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch 搜索API

このAPIはElasticsearch内で検索を行うために使用されます。ユーザーはクエリ文字列をパラメータとして含むGETリクエストを送信して検索を行うか、リクエストのメッセージ本文にクエリを含めて検索を行うことができます。検索APIは主にマルチインデックス、マルチタイプのものです。

マルチインデックス

Elasticsearchはすべてのインデックスまたは特定のインデックスに存在するドキュメントを検索することができます。例えば、名前が「central」を含むすべてのドキュメントを検索する必要がある場合、以下の操作を実行できます:

GET /_all/_search?q=city:paprola

実行したコードの結果、以下の応答を得ました-

{
   "took": 33,
   "timed_out": false,
   "_shards": {
      "total": 7,
      "successful": 7,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.9808292,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": ""5",
            "_score": 0.9808292,
            "_source": {"}}
               "name": "Central School"
               "description": "CBSE Affiliation",
               "street": "Nagan",
               "city": "paprola",
               "state": "HP",
               "zip": ""176115",
               "location": [
                  31.8955385,
                  76.8380405
               ],
               "fees": 2200,
               "tags": [
                  "Senior Secondary",
                  "beautiful campus"
               ],
               "rating": ""3.3"
            }
         }
      ]
   }
}

URI検索

検索操作で多くのパラメータを統一リソース識別子(URI)を使用して伝達できます。-

序号パラメータ及び説明
1

Q

このパラメータはクエリ文字列を指定します。

2

lenient

このパラメータはクエリ文字列を指定します。このパラメータをtrueに設定することで、Formatbasedのエラーを無視できます。デフォルトではfalseです。

3

fields

このパラメータはクエリ文字列を指定します。

4

sort

このパラメータを使用してソート結果を取得できます。このパラメータの可能な値はfieldName、fieldName:ascです。/ fieldName:desc

5

timeout

このパラメータを使用して検索時間を制限し、応答には指定された時間内のヒットのみが含まれます。デフォルトでは、タイムアウトがありません。

6

terminate_after

各スレッドの指定された数のドキュメントに応答を制限し、そのスレッドに到達すると、クエリが事前に終了します。デフォルトでは、termin_afterがありません。

7

from

返されるヒット数の開始インデックスです。デフォルト値は0です。

8

size

返されるヒット数を示し、デフォルト値は10。

リクエストの本文検索

リクエストの本文にクエリDSLを使用してクエリを指定することができます。前の章で多くの例が示されました。ここでそのような例を一つ示します-

POST /schools/_search
{
   "query": {
      "query_string": {
         "query": "up"
      }
   }
}

実行したコードの結果、以下の応答を得ました-

{
   "took": 11,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "skipped": 0,
      "failed": 0
   },
   "hits": {
      "total": {
         "value": 1,
         "relation": "eq"
      },
      "max_score": 0.47000363,
      "hits": [
         {
            "_index": "schools",
            "_type": "school",
            "_id": ""4",
            "_score": 0.47000363,
            "_source": {"}}
               "name": "City Best School",
               "description": "ICSE",
               "street": "West End",
               "city": "Meerut",
               "state": "UP",
               "zip": ""250002",
               "location": [
                  28.9926174,
                  77.692485
               ],
               "fees": 3500,
               "tags": [
                  "fully computerized"
               ],
               "rating": ""4.5"
            }
         }
      ]
   }
}