ES 查询 _doc 的区别:加与不加的差异解析
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 即可包含整个文档信息。
原文地址: https://www.cveoy.top/t/topic/jryc 著作权归作者所有。请勿转载和采集!