ES 查询 _doc 的区别:加与不加的差异解析

在 Elasticsearch (ES) 中,每个文档都有一个唯一的 _id 标识符和一个文档级别的数据。当我们进行查询时,如果不加 _doc,查询结果将只返回文档级别的数据,而不包括 _id 和其他元数据信息。如果加上 _doc,则查询结果将包括整个文档的所有信息,包括 _id 和元数据信息。

1. 为什么加了 _doc 和不加 _doc 查询出来的结果不一样?

加了 _doc 查询结果包括整个文档的所有信息,而不加 _doc 只返回文档级别的数据,因此查询结果会不同。

2. 什么叫文档级别的数据?

文档级别的数据是指每个文档中的字段和其对应的值。例如,一个文档可能包括字段'姓名'和'年龄',其对应的值分别为'张三'和'20岁',这些信息就是文档级别的数据。

3. 但是在 ES6 中不加 _doc 也能查出所有的字段,为什么?

在 ES6 中,ES 默认会返回整个文档的所有字段,因此即使不加 _doc 也能查出所有的字段。

4. 但是加了 _doc 为什么又查不出数据来呢?

加了 _doc 后,查询结果应该包括整个文档的所有信息,如果查询结果为空,可能是查询条件不正确或者文档中不存在对应的字段。

5. _doc 怎么加的?

在查询时,只需要在查询语句中加上 _doc 即可,例如:

GET /my_index/my_type/_search
{
  "query": {
    "match": {
      "_doc": "张三"
    }
  }
}

总结:

  • 在 ES 中,_doc 用于指定查询结果包含整个文档信息,不加 _doc 则只返回文档级别数据。
  • ES6 默认返回所有字段,即使不加 _doc。
  • 查询结果为空可能是查询条件或文档字段错误导致。
  • 在查询语句中添加 _doc 即可包含整个文档信息。
ES 查询 _doc 的区别:加与不加的差异解析

原文地址: https://www.cveoy.top/t/topic/jryc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录