본문 바로가기

elasticsearch

elasticsearc 검색 첫 번째

반응형

지금까지 엘라스틱서치를 구성하는 부분을 알아다면 이제 실제 검색에 필요한 부분을 확인해 보자.

복잡한 검색 방법보다는 검색 결과에 대한 부분을 먼저 확인해 보자. ( 참고 : 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 에서는 백그라운드에서 검색 요청을 끝까지 수행 한다는 말이다.


반응형