May be is a very stupid question, What is the best way to check if a field of a document in elasticsearch exists? I can't find anything in the documentation.
For example if this document doesn't have the field/key "price" I don't want to return in the result.
{ "updated": "2015/09/17 11:27:27", "name": "Eye Shadow", "format": "1.5 g / 0.05 oz", }
What I can do?
Thanks
You can use the exists
filter combined with a bool/must
filter like this:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "price"
}
},
... <-- your other constraints, if any
]
}
}
}
}
}
DEPRECATED (since ES5) You can also use the missing
filter combined with a bool/must_not
filter:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"missing": {
"field": "price"
}
}
]
}
}
}
}
}
The exists
filter has been replaced by exists
query from ES 2.1, though the working of it is the same. Also, the missing filter is removed and missing query deprecated.
To get all docs which have a particular field,
"bool": {
"must": {
"exists": {
"field": "my_field"
}
}
}
and to get all docs which does NOT have a particular field, use it with must_not
like this
"bool": {
"must_not": {
"exists": {
"field": "my_field"
}
}
}
Elastic docs: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-missing-query.html
You can use exists filter:
{
"query": {
"filtered": {
"filter": {
"exists": {
"field": "status"
}
},
"query": {
"match_all": {}
}
}
}
}
Regards, Alain
You can directly do
{
"query": {
"exists": {
"field": "fieldName"
}
}
}
If you wanna add some match too, then you can go for
{
"query": {
"bool": {
"must": [{
"match": {
"fieldName": "value"
}
},
{
"exists": {
"field": "fieldName"
}
}]
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
GET /_search
{
"query": {
"exists" : { "field" : "price" }
}
}
source: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
来源:https://stackoverflow.com/questions/32949321/best-way-to-check-if-a-field-exist-in-an-elasticsearch-document