ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Exists Query(非空值查询) 返回在原始字段中至少有一个非空值的文档: | `GET /_search` `{` `"query"``: {` `"exists"` `: { ``"field"` `: ``"user"` `}` `}` `}` | 例如,这些文档都将匹配上面的查询: | `{ ``"user"``: ``"jane"` `}` `{ ``"user"``: ``""` `} ①` `{ ``"user"``: ``"-"` `} ②` `{ ``"user"``: [``"jane"``] }` `{ ``"user"``: [``"jane"``, ``null` `] } ③` | ①空字符串是 **non-null** (非空值)。 ②即使通过 **standard analyzer** 标准分析器也不会发出警告,原始字段也是非空的。 ③至少需要一个 **non-null** 非空值。 这些文档将不会被上面的查询匹配到: | `{ ``"user"``: ``null` `}` `{ ``"user"``: [] } ①` `{ ``"user"``: [``null``] } ②` `{ ``"foo"``:  ``"bar"` `} ③` | ①这个字段没有任何值。 ②至少需要一个 **non-null** 非空值。 ③ user 字段完全丢失。 ##  null_value mapping (非空值映射) 如果字段映射包括 [**null_value** ](https://www.elastic.co/guide/en/elasticsearch/reference/current/null-value.html)(空值)设置,那么明确的 **null** (空对象)将替换为指定的 **null_value** (空值)。 例如:user 字段映射如下: | `"user"``: {` `"type"``: ``"text"``,` `"null_value"``: ``"_null_"` `}` | 那么明确的 **null** (空对象)将被索引为字符串 “_null_” ,并且以下文档将被**exists** (非空值)筛选器匹配: | `{ ``"user"``: ``null` `}` `{ ``"user"``: [``null``] }` | 但是,这些文档没有明确的 **null** (空对象)值,在 user 字段中也没有值,并且将不能被 **exists** (非空值)筛选器匹配: | `{ ``"user"``: [] }` `{ ``"foo"``: ``"bar"` `}` | ##  missing query (缺失查询) ** missing query** (缺失查询)已被废弃,因为它可以方便的由 **must_not** 子句中的**exists** 查询替换,如下所示: | `GET /_search` `{` `"query"``: {` `"bool"``: {` `"must_not"``: {` `"exists"``: {` `"field"``: ``"user"` `}` `}` `}` `}` `}` | 此查询返回在 user 字段中没有值的文档。