exists
filter is used to check whether given document contains field or not. “exists” returns documents that have at least
one non null value in the field.
Example
"exists"
: { "field" : "user" }
Return all
the documents that contains field user, which has at least one non-null value.
I inserted
below student data into college index.
PUT /_bulk {"create" : {"_index": "college", "_type": "student", "_id": "1" }} {"id":358,"firstName":"Hari Krishna","lastName":"Gurram", "hobbies":["visiting places","watching movies","chat with friends"]} {"create" : {"_index": "college", "_type": "student", "_id": "2" }} {"id":12345,"firstName":"Joel Babu","lastName":"Chelli","hobbies":[null]} {"create" : {"_index": "college", "_type": "student", "_id": "3" }} {"id":765,"firstName":"PTR","lastName":"sailaja"} {"create" : {"_index": "college", "_type": "student", "_id": "4" }} {"id":75,"firstName":"Rama Krishna","lastName":"Gurram","hobbies":["climbing hills", null]}
1.Get all the documents where there is a field
hobbies
GET /college/student/_search { "query": { "filtered": { "filter": { "exists": { "field": "hobbies" } } } } }
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 1, "hits": [ { "_index": "college", "_type": "student", "_id": "4", "_score": 1, "_source": { "id": 75, "firstName": "Rama Krishna", "lastName": "Gurram", "hobbies": [ "climbing hills", null ] } }, { "_index": "college", "_type": "student", "_id": "1", "_score": 1, "_source": { "id": 358, "firstName": "Hari Krishna", "lastName": "Gurram", "hobbies": [ "visiting places", "watching movies", "chat with friends" ] } } ] } }
As you
observe results document with id’s 12345 and 765 are not returned. Since
document 12345 contains has hobbies field as null.
{"id":12345,"firstName":"Joel
Babu","lastName":"Chelli","hobbies":[null]}
Document 765
don’t contain hobbies field.
{"id":765,"firstName":"PTR","lastName":"sailaja"}
No comments:
Post a Comment