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"
            }
         }
      ]
   }
}