English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
웹 애플리케이션 프로그래밍 인터페이스(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가 포함되어 있습니다.
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}}