elasticsearch는 schema-less 아키텍처라 특정 필드가 존재하는지 확인할 필요가 있다.
그 때는 exists 필터를 사용할 수 있다. 아래와 같이 요청하면 전체 다큐먼트 중, url 필드가 존재하는 다큐먼트를 검색한다.
curl -XPOST 'http://127.0.0.1:9200/blog/comment/_search?pretty=true' -d '{
"query": {
"filtered": {
"filter": {
"exists": {
"field":"url"
}
},
"query": {
"match_all": {}
}
}
}
}'
exists 필터와 반대로 없는 것만 얻고 싶으면 missing 필터를 사용한다.
curl -XPOST 'http://127.0.0.1:9200/blog/comment/_search?pretty=true' -d '{
"query": {
"filtered": {
"filter": {
"missing": {
"field":"url"
}
},
"query": {
"match_all": {}
}
}
}
}'
exists와 missing 필터는 확인할 필드 이름으로 field 매개변수만을 받는다.
만약 임베디드 객체 또는 임베디드 객체의 목록을 사용하고 있다면, 하위 객체 필드를 같이 사용할 수 있다.
'Elasticsearch' 카테고리의 다른 글
[elasticsearch] 템플릿 질의 (template query) (0) | 2015.06.21 |
---|---|
[elasticsearch]groovy script 사용 설정 (0) | 2015.06.19 |
[elasticsearch] function score query 공부 할 싸이트 (0) | 2015.06.17 |
[elasticsearch] groovy script 동작 가능 여부 설정 (0) | 2015.06.17 |
[elasticsearch] 새로운 필드 추가하기 / 데이터 저장하기 (0) | 2015.06.16 |