본문 바로가기

목록이 없습니다.

엘라스틱서치(elastic search) query 검색 결과 구조

Server/Elastic Search
    반응형

    엘라스틱 서치의 검색 결과를 보면 JSON 구조로 여러 키와 값들이 나오는데 각각의 요소들이 도대체 어떤 의미를 지닌건지 구조를 정리해놓으려고 합니다.

     


     

    검색결과 JSON

    {
    	"took": 3, // 검색 수행 시간 (milliseconds)
    	"timed_out": false, // 검색 쿼리 수행 중 timeout 발생 여부를 나타낸다.
    	"_shards": { // 요청에 대한 검색 결과를 위해 참여한 샤드
    		"total": 2,
    		"successful": 2, // 요청에 대한 성공 샤드 수
    		"failed": 0 // 요청에 대한 실패 샤드 수
    	},
    	"hits": {
    		"total": 1, // 요청에 대한 결과 문서 수 (결과 전체 개수)
    		"max_score": 1.0, // 검색 쿼리에 얼마만큼 부합되는지를 나타내는 척도 (결과 문서 중 가장 높은 score를 표시)
    		"hits": [{
    			"_index": "get-together", // 인덱스
    			"_type": "group", // 타입
    			"_id": "1", // 문서의 ID
    			"_score": 1.0, // 검색 쿼리에 얼만큼 관련성이 있는지 나타냄
    			"_source": { // 검색 결과 내용
    				"key1": "value1",
                    "key2": "value2",
                    ...
    			}
    		}]
    	}
    }

     

    여기서 hits안에 있는 score는 검색 요청 시 query로 요청한 경우에만 나온다고 하네요 match로 요청한 경우 해당 키워드와 정확히 일치하는 것만 가져오기 때문에 쉽게 말해 sql의 = 비교와 동일하기 때문에 score가 없다고 합니다. query는 비슷한 내용이라도 조회가 되는 모양이에요.

     

    그리고 검색 결과 내용은 처음 엘라스틱 서치의 인덱스를 생성할 때 만들어 둔 테이블의 구조로 나와요. key는 column명이나오고 value에는 해당 데이터가 나오는 구조입니다. sql과 거의 흡사해요.

     


     

    위에서 주석으로 설명은 되어있지만 실질적으로 어떤 의미인지는 잘 모르겠는, 예를 들어 샤드같은 것은 추후에 따로 정리하겠습니다.

    반응형