지금까지 엘라스틱서치를 구성하는 부분을 알아다면 이제 실제 검색에 필요한 부분을 확인해 보자.
복잡한 검색 방법보다는 검색 결과에 대한 부분을 먼저 확인해 보자. ( 참고 : ES사이트 )
간단하게 검색을 해보면 (GET /_search ) 아래와 같은 응답 / 내용을 받아 볼 수 있다.
{
"hits" : { //검색 결과의 내용 및 전반적인 내용을 포함하고 있음."total" : 14, //검색 결과 수
"hits" : [ //검색 결과 내용을 배열로 가지고 있음.
{
"_index": "INDEX", //인덱스이름
"_type": "DOCUMNET", //다큐먼트이름
"_id": "7", //id
"_score": 3, //검색 쿼리에 얼마만큼 부합되는지를 나타내는 척도 ( 추가적으로 검색 결과는 기본적으로 이 점수에 의해서 정렬됨)
"_source": { //검색결과에 세부내용들
"date": "2014-09-17",
"name": "John Smith",
"tweet": "The Query DSL is really powerful and flexible",
"user_id": 2
}
},
],
"max_score" : 3 //검색 결과들 중 가장 정확한 수치를 나타냄
},
"took" : 4, //총 소요된 시간을 나타냄 ( 마이크로초)
"_shards" : { //검색 결과를 도출해 내기 위해 참여한 샤드에 대한 정보임, 문제가 없다면 failed 는 0 이겠으나 문제가 있을 경우 failed 값이 변경 될 수 있음 이 경우 문제에 대해서 확인이 필요하다.
"failed" : 0,
"successful" : 10,
"total" : 10
},
"timed_out" : false //실행 중 timeout 이 발생했는지에 대한 여부를 나타냄, 기본값은 설정이 안되어 있지만 timeout을 지정 할 수 있음.
}
위 내용중 timed_out 에 대해서 부가적으로 설명하자면 검색 결과를 완벽하게 가져오는게 중요할 수도 있으나, 응답시간이 더 중요할 수도 있다.
이런 경우 "GET /_search?timeout=1s" 와 같이 timeout 을 지정할 수 있다.
일반적으로 timeout 이 발생하면 응답이 실패하는 것으로 볼 수 있으나 ES 의 경우 timeout 시간내 검색한 결과까지 반환을 한다.
또 하나 더 추가하자면 timeout 이 발생하면 검색 실행을 취소하는게 아니고, 지금까지 검색한 내용을 반환하라는 의미라고 한다.
이 말인 즉, 오래 걸리는 작업을 취소하더라도 실제 ES 에서는 백그라운드에서 검색 요청을 끝까지 수행 한다는 말이다.
'elasticsearch' 카테고리의 다른 글
filebeat 관련 요약 및 정리 ( elasticsearch 사이트 번역 정도) (0) | 2018.04.13 |
---|---|
sping data elasticsearch 정리 ( spring 에서 es 사용 관련) (3) | 2016.12.14 |
elasticsearch indexing Performance Tips ( 엘라스틱서치) (0) | 2016.06.01 |
elasticsearch module (엘라스틱서치 모듈에 대해서) (0) | 2016.05.29 |
엘라스틱서치 ( elasticsearch ) 순차 재시작 (0) | 2016.05.27 |