elasticsearch 默认情况下,Elasticsearch是否存储字段值?,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch 默认情况下,Elasticsearch是否存储字段值?,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch 默认情况下,Elasticsearch是否存储字段值?

elasticsearch 默认情况下,Elasticsearch是否存储字段值?,elasticsearch,lucene,elasticsearch,Lucene,在Elasticsearch中,映射的所有字段都有一个存储的属性,该属性确定字段的数据是否存储在磁盘上(除了存储整个\u源) 它默认为false 但是,每个碎片中的每个片段在映射中的每个字段都有一个Docvalues结构。该结构存储段中所有文档的字段值 默认情况下,所有文档和字段都包含在结构化文档中 因此,一方面,默认情况下Elasticsearch不存储字段的值。另一方面,它将值存储在Docvalues结构中 那么它是哪一个呢?默认情况下Elasticsearch存储还是不存储值?ES以多种格

在Elasticsearch中,映射的所有字段都有一个
存储的
属性,该属性确定字段的数据是否存储在磁盘上(除了存储整个
\u源

它默认为
false

但是,每个碎片中的每个片段在映射中的每个字段都有一个Docvalues结构。该结构存储段中所有文档的字段值

默认情况下,所有文档和字段都包含在结构化文档中

因此,一方面,默认情况下Elasticsearch不存储字段的值。另一方面,它将值存储在Docvalues结构中


那么它是哪一个呢?默认情况下Elasticsearch存储还是不存储值?

ES以多种格式存储同一字段,用于不同的目的

考虑这个:

"prop_1":{ "type":"string", "index":"not_analyzed","store":true,"doc_values":true}
prop_1
将作为
索引
doc_值
存储的
字段。除此之外,
prop_1
存储到
\u源
字段与其他字段一起

如上所述,即使
存储:false
,字段数据仍以多种格式保存在磁盘上

存储字段是为优化存储而设计的,而文档值是 快速设计访问字段值。在执行 查询许多文档值字段都是为候选点击而访问的,因此 访问速度必须快。这就是您应该使用文档值的原因 在排序中,聚合和纸条。另一方面,存储的字段应用于顶级匹配文档的返回字段值

现在,您还可以使用
doc\u值
返回响应字段:-

GET /_search
{
    "query" : {
        "match_all": {}
    },
    "docvalue_fields" : ["test1", "test2"]
}

单据值字段可以用于未存储的字段。因此,在我看来,存储字段现在没有任何意义。

嘿,谢谢你的回答。我想了解存储字段(不是文档值)的物理数据结构,以及这种结构是否比文档值结构提供更快的单个值的影响。谢谢你可以参考: