반응형
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 는 비슷한 값이면 다 찾아온다고 한다!
반응형
'Elasticsearch' 카테고리의 다른 글
[elasticsearch] preference 사용해야 하는 이유 / 방법 및 예제 알아보기 (0) | 2022.11.01 |
---|---|
[Elasticsearch] ELK란? 클러스터, 노드, 샤드에 대해 알아보기 (0) | 2022.11.01 |
[Elasticsearch] Data Math 개념과 계산하는 방법 (0) | 2022.10.24 |
[Elasticsearch] analyzer [ ] contains filters [ ] that are not allowed to run in index time mode (0) | 2022.09.05 |
[Elasticsearch] synonyms 동의어 사전 추가 및 업데이트 적용하기 (0) | 2022.09.02 |