在 Elasticsearch 中,使用 exists 查询的方式如下:

  1. GET /my_index/posts/_search
  2. {
  3. "query" : {
  4. "constant_score" : {
  5. "filter" : {
  6. "exists" : { "field" : "tags" }
  7. }
  8. }
  9. }
  10. }

缺失查询

SELECT tags
FROM posts
WHERE tags IS NULL

  1. GET /my_index/posts/_search
  2. {
  3. "query" : {
  4. "constant_score" : {
  5. "filter": {
  6. "missing" : { "field" : "tags" }
  7. }
  8. }
  9. }
  10. }

对象的存在与缺失

不仅可以过滤核心类型, exists and missing 查询 还可以处理一个对象的内部字段。

  1. {
  2. "bool": {
  3. "should": [
  4. { "exists": { "field": "name.first" }},
  5. { "exists": { "field": "name.last" }}
  6. ]
  7. }
  8. }