Elasticsearch
[elasticsearch] 필드 값이 존재하지않는 경우 query 만들기
알로호모라
2022. 10. 28. 18:17
반응형
Elasticsearch 에서 특정 field 값이 존재하지 않는 데이터를 찾을 때 쓰는 query 정리
exists 사용하기
GET test_index/_search
{
"query": {
"constant_score": { // 이것도 함께 써주어야 오류가 안 난다.
"filter": {
"exists": {
"field": "name" // "field" : "필드명" 적어주기
}
}
}
}
}
이렇게 exists를 사용하면 해당 필드 (위에서는 "name") 이 존재하는 데이터만 추려서 보여준다.
만약 type이 "nested"인 경우 query에 nested 추가하기
GET test_index/_search
{
"query": {
"nested": {
"path": "countries",
"query": {
"constant_score": {
"filter": {
"exists": {
"field": "countries" // 각 안의 속성들이 있는지 찾으려면 countries.name 방식으로 ㄱ
}
}
}
}
}
}
}
특정 값인 경우 찾을 때
: filter 로 거르고 match로 매칭해서 찾기
GET test_index/_search
{
"query": {
"bool": {
"must": {
"match": {
"name": "홍길동"
}
},
"filter": {
"match": {
"isHuman": true
}
}
}
}
}
위와 같이 "bool" : { "must": { } , "filter": { } } query로 검색할 수 있다. "name" 필드가 "홍길동" 이어야 하고 (비슷해도 찾음) "isHuman" 필드가 *반드시* true 인 데이터를 찾아온다.
filter는 true or false 처럼 o / x 인 값을 필터할 때 사용되고 must - match 는 비슷한 값이면 다 찾아온다고 한다!
반응형