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

Elasticsearch API 조건

웹 애플리케이션 프로그래밍 인터페이스(API)는 특정 웹 애플리케이션에서의 소프트웨어 구성 요소에 접근하기 위한 함수 호출이나 다른 프로그래밍 명령어의 집합입니다. 예를 들어, Facebook API는 Facebook에서의 데이터나 다른 기능에 접근하여 개발자가 애플리케이션을 생성하는 데 도움을 줍니다; 이는 생일이나 상태 업데이트일 수 있습니다.

Elasticsearch는 REST API를 제공하며, JSON은 HTTP를 통해 이 API에 접근할 수 있습니다. Elasticsearch는 일부 규약을 사용하며, 우리는 지금 논의할 것입니다.

여러 인덱스

API의 대부분의 작업은 주로 검색 및 다른 작업이며, 이는 사용자가 한 번의 쿼리만으로도 여러 위치나 모든 사용 가능한 데이터에서 검색할 수 있도록 도와줍니다. 여러 인덱스에서 작업을 수행하기 위해 많은 다른 기호가 사용됩니다. 우리는 이 중 일부를 이 장에서 논의할 것입니다.

구분 기호

POST /index1,index2,index3/_search

요청 본문

{
   "query":{
      
         "query":"any_string"
      }
   }
}

응답

index에서 왔습니다1, index2, index3의 JSON 객체에 any_string가 포함되어 있습니다.

_all 모든 인덱스의 키워드

POST /_all/_search

요청 본문

{
   "query":{
      
         "query":"any_string"
      }
   }
}

응답

모든 인덱스에서 왔으며 any_string를 포함한 JSON 객체

대체기호(*,+,–)

POST /*/_search

요청 본문

{
   "query":{
      
         
      }
   }
}

응답

또한 다음 코드를 사용할 수도 있습니다-

POST /*,-schools_gov /_search

요청 본문

{
   "query":{
      
         
      }
   }
}

응답

JSON 객체는 "school"로 시작하는 모든 인덱스에서 왔지만 school_gov에서는 아니며 CBSE를 포함한 인덱스에서 왔습니다.

아직도 URL 쿼리 문자열 매개변수가 있습니다-

POST /*/_search

요청 본문

{
   "query":{
      
         
      }
   }
}

요청 본문

{
   
      
         
         
         
      
      
      
      
   404
}

-

POST /*/

요청 본문

{
   "query":{
      
         
      }
   }
}

-

POST /*/

요청 본문

{
   "query":{
      "match_all":{}
   }
}

{
   1
   
}

-

POST /schools/

응답

-

POST /*/

요청 본문

{
   "query":{
      "match_all":{}
   }
}

응답

{
   
      
         
      
      
   }403
}

인덱스 이름에 날짜 수학 지원

Elasticsearch는 날짜와 시간에 따라 인덱스를 검색할 수 있는 기능을 제공합니다. 날짜와 시간을 특정 형식으로 지정해야 합니다. 예를 들어, accountdetail-2015.12.30, 인덱스는 저장됩니다2015년12월30일의 은행 계좌 세부 정보를 반환합니다. 특정 날짜나 날짜 범위의 세부 정보를 얻기 위해 수학적 연산을 수행할 수 있습니다.

날짜 수학 인덱스 이름의 포맷-

<static_name{date_math_expr{date_format|time_zone}}>
/<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search

static_name은 표현의 일부로, 각 날짜의 수학적 인덱스(예: 고객 세부 정보)에서 일관되게 유지됩니다. date_math_expr은 now와 같은 수학적 표현을 포함합니다-2d와 같이 동적으로 날짜와 시간을 결정합니다. date_format은 날짜를 YYYY.MM.dd와 같은 인덱스에 기록할 포맷을 포함합니다. 오늘은2015년12월30일이면 <accountdetail- {now-2d {YYYY.MM.dd}}>은 accountdetail-2015.12.28。

표현해석됩니다
<accountdetail-{now-d}>accountdetail-2015.12.29
<accountdetail-{now-M}>accountdetail-2015.11.30
<accountdetail-{now{YYYY.MM}}>accountdetail-2015.12

지금, Elasticsearch에서 제공하는 일반적인 옵션 중 일부를 알아보겠습니다. 이 옵션들은 지정된 형식의 응답을 얻을 수 있습니다.

미화된 결과

URL 쿼리 파라미터(예를 들어, pretty = true)를 추가하여 정형화된 JSON 객체에서 응답을 얻을 수 있습니다.

POST /schools/_search?pretty = true

요청 본문

{
   "query":{
      "match_all":{}
   }
}

응답

……………………..
{
   "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0,
   "_source":{
      "name":"Central School", "description":"CBSE Affiliation",
      "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115",
      "location": [31.8955385, 76.8380405], "fees":2000,
      "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5"
   }
}
………………….

인간이 읽을 수 있는 출력

이 옵션을 통해 통계 응답을 인간이 읽을 수 있는 형식(만약 human = true) 또는 컴퓨터가 읽을 수 있는 형식(만약 human = false)으로 변경할 수 있습니다. 예를 들어, human = true일 경우 distance_kilometer = 20KM; human = false 일 경우 distance_meter = 20000, 이 때 다른 컴퓨터 프로그램이 응답을 사용해야 합니다.

field_path 매개변수에 추가하여 덜 많은 필드에 대한 응답을 필터링할 수 있습니다. 예를 들어,

POST /schools/_search?filter_path = hits.total

요청 본문

{
   "query":{
      "match_all":{}
   }
}

응답

{"hits":{"total":3}}