Elasticsearch
Elasticsearch 결과에 "_ignored" 가 나오는 이유
알로호모라
2023. 10. 17. 18:29
반응형
es 에서 검색 결과를 보다가 발견한 "_ignored" 필드 !
"_ignored": [
"description.keyword" // ?
],
이게 뭘까 query 날릴 때 분명 description 관련한 것은 아무것도 없는데 왜 _ignored 가 뜨며 description.keyword 가 왜 ignored 되었는지?
Es 결과
{
"took": 9,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 5,
"relation": "eq"
},
"max_score": 89.01466,
"hits": [
{
"_index": "test_index",
"_id": "123",
"_score": 24.17268,
"_ignored": [
"description.keyword" // ?
],
"_source": {
"name": "오늘은화요일",
"idx": 123
}
},
해당 Index 의 속성에서 살펴보니 기본적으로 Text 의 경우 es 가 keyword 값을 type no.2 느낌으로 자동으로 넣어주는데 바로 저 ignore_above: 256 이 원인이었다. type: text 는 부분 일치, 형태소 분석 등 여러 검색이 가능한 반면 keyword 는 부분 일치가 아닌 완전한 일치를 가리킨다. 글자 256자 를 초과하면 해당 속성의 키워드 검색을 무시한다는 뜻이었다 !
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
그럼 데이터가 256자 초과해서 엄~청 길게되면 검색이 안되는 건가!? 했는데 생각해보니 그건 text 검색으로 충분히 가능하고 키워드 (완전한 일치) 검색은 256 자 초과하는 스트링 값을 검색할 일은 보통은 없을 것 같아서 이런 설정이 있나 보다 하고 이해가 되었다.
반응형