Fields / Script Fields / Doc value Fields
Fields
警告:
stored_fields 参数是关于显式标记为存储在映射中的字段,默认情况下关闭,通常不推荐。 使用源过滤来选择要返回的原始源文档的子集。
允许有选择地加载搜索匹配所表示的每个文档的特定存储字段。
可用于从文档加载所有存储的字段。
空数组只会为每个匹配返回 _id 和 _type,例如:
如果请求的字段未存储(存储映射设置为 false ),它们将被忽略。
从文档本身获取的存储字段值总是作为数组返回。 相反,诸如 _routing 和 _parent 字段的元数据字段从不作为数组返回。
此外,只有叶子字段(leaf field)可以通过字段选项返回。 因此,无法返回对象字段,并且此类请求将失败。
脚本字段也可以自动检测并用作字段,所以像 _source.obj1.field1 这样的东西可以使用,虽然不推荐,因为 obj1.field1 也会工作。
Disable stored fields entirely
要禁用存储的字段(和元数据字段),请完全使用:_none_
:
Note:
如果使用 _none_ , _source 和 version 参数不能激活 。
Script Fields
允许为每次匹配返回脚本评估(基于不同的字段),例如:
脚本字段可以用于未存储的字段(在上述情况下为 my_field_name ),并允许返回要返回的自定义值(脚本的计算值)。
脚本字段还可以访问实际的_source文档索引并提取从中返回的特定元素(可以是 “对象” 类型)。 这里是一个例子:
注意 _source
关键字在这里用于导航 json 样模型。
了解 doc ['my_field'].value 和 _source.my_field 之间的区别很重要。 第一个,使用 doc 关键字,将导致该字段的术语被加载到内存(缓存),这将导致更快的执行,但更多的内存消耗。 此外,doc [...] 符号只允许简单的有价值的字段(不能从它返回一个 json 对象),并且只对非分析或单个术语的字段有意义。
Doc value Fields
允许返回每个匹配的字段的 doc value 表示形式,例如:
Doc value Fields 可以用于未存储的字段。
请注意,如果 fields 参数指定没有 docvalues 的字段,它将尝试从 fielddata 缓存加载值,使得该字段的术语被加载到内存(缓存),这将导致更多的内存消耗。
Last updated