Elasticsearch-API 규칙
웹의 애플리케이션 프로그래밍 인터페이스 (API)는 특정 웹 애플리케이션의 소프트웨어 구성 요소에 액세스하기위한 함수 호출 또는 기타 프로그래밍 명령 그룹입니다. 예를 들어, Facebook API는 개발자가 Facebook의 데이터 또는 기타 기능에 액세스하여 애플리케이션을 만들 수 있도록 도와줍니다. 생년월일 또는 상태 업데이트 일 수 있습니다.
Elasticsearch는 HTTP를 통해 JSON으로 액세스되는 REST API를 제공합니다. Elasticsearch는 지금 논의 할 몇 가지 규칙을 사용합니다.
여러 지수
API에서 주로 검색 및 기타 작업과 같은 대부분의 작업은 하나 이상의 인덱스에 대한 것입니다. 이를 통해 사용자는 쿼리를 한 번만 실행하여 여러 위치 또는 사용 가능한 모든 데이터를 검색 할 수 있습니다. 여러 인덱스에서 작업을 수행하기 위해 다양한 표기법이 사용됩니다. 이 장에서 몇 가지에 대해 논의 할 것입니다.
쉼표로 구분 된 표기법
POST /index1,index2,index3/_search
요청 본문
{
"query":{
"query_string":{
"query":"any_string"
}
}
}
응답
any_string이있는 index1, index2, index3의 JSON 객체.
모든 인덱스에 대한 _all 키워드
POST /_all/_search
요청 본문
{
"query":{
"query_string":{
"query":"any_string"
}
}
}
응답
모든 인덱스의 JSON 개체 및 any_string 포함.
와일드 카드 (*, +, –)
POST /school*/_search
요청 본문
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
응답
CBSE가있는 학교로 시작하는 모든 인덱스의 JSON 객체.
또는 다음 코드를 사용할 수도 있습니다.
POST /school*,-schools_gov /_search
요청 본문
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
응답
"school"로 시작하지만 schools_gov에서 시작하지 않고 CBSE를 포함하는 모든 인덱스의 JSON 객체입니다.
URL 쿼리 문자열 매개 변수도 있습니다.
- ignore_unavailable− URL에 존재하는 하나 이상의 색인이 존재하지 않는 경우 오류가 발생하지 않거나 작업이 중지되지 않습니다. 예를 들어 학교 색인은 존재하지만 book_shops는 존재하지 않습니다.
POST /school*,book_shops/_search
요청 본문
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
요청 본문
{
"error":{
"root_cause":[{
"type":"index_not_found_exception", "reason":"no such index",
"resource.type":"index_or_alias", "resource.id":"book_shops",
"index":"book_shops"
}],
"type":"index_not_found_exception", "reason":"no such index",
"resource.type":"index_or_alias", "resource.id":"book_shops",
"index":"book_shops"
},"status":404
}
다음 코드를 고려하십시오-
POST /school*,book_shops/_search?ignore_unavailable = true
요청 본문
{
"query":{
"query_string":{
"query":"CBSE"
}
}
}
응답 (오류 없음)
CBSE가있는 학교로 시작하는 모든 인덱스의 JSON 객체.
allow_no_indices
true이 매개 변수의 값은 와일드 카드가있는 URL이 색인이없는 경우 오류를 방지합니다. 예를 들어, schools_pri로 시작하는 색인이 없습니다-
POST /schools_pri*/_search?allow_no_indices = true
요청 본문
{
"query":{
"match_all":{}
}
}
응답 (오류 없음)
{
"took":1,"timed_out": false, "_shards":{"total":0, "successful":0, "failed":0},
"hits":{"total":0, "max_score":0.0, "hits":[]}
}
expand_wildcards
이 매개 변수는 와일드 카드를 확장하여 인덱스를 열거 나 닫힌 인덱스를 확장해야하는지 아니면 둘 다 수행해야하는지 여부를 결정합니다. 이 매개 변수의 값은 open 및 closed 또는 none 및 all 일 수 있습니다.
예를 들어, 가까운 색인 학교-
POST /schools/_close
응답
{"acknowledged":true}
다음 코드를 고려하십시오-
POST /school*/_search?expand_wildcards = closed
요청 본문
{
"query":{
"match_all":{}
}
}
응답
{
"error":{
"root_cause":[{
"type":"index_closed_exception", "reason":"closed", "index":"schools"
}],
"type":"index_closed_exception", "reason":"closed", "index":"schools"
}, "status":403
}
인덱스 이름의 날짜 수학 지원
Elasticsearch는 날짜와 시간에 따라 인덱스를 검색하는 기능을 제공합니다. 특정 형식으로 날짜와 시간을 지정해야합니다. 예를 들어, accountdetail-2015.12.30, index는 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이면 distance_kilometer = 20KM이고 human = false이면 distance_meter = 20000 (다른 컴퓨터 프로그램에서 응답을 사용해야 할 때)입니다.
응답 필터링
field_path 매개 변수에 추가하여 더 적은 필드에 대한 응답을 필터링 할 수 있습니다. 예를 들면
POST /schools/_search?filter_path = hits.total
요청 본문
{
"query":{
"match_all":{}
}
}
응답
{"hits":{"total":3}}