Best way to check if a field exist in an Elasticsearch document

╄→гoц情女王★ 提交于 2019-11-29 01:03:13

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"
              }
            }
          ]
        }
      }
    }
  }
}
Devi

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!