一尘不染

指定在ElasticSearch中建立索引的字段

elasticsearch

我有一个文档,其中包含许多我从未查询过的字段,因此我想关闭这些字段的索引以节省资源。我相信我需要禁用该_all字段,但是如何指定要对哪些字段建立索引呢?


阅读 1449

收藏
2020-06-22

共1个答案

一尘不染

默认情况下,所有字段也都在_all特殊字段内建立索引,该字段开箱用地提供了所谓的catchall功能。但是,可以通过以下include_in_all选项为映射中的每个字段指定是否要将其添加到_all字段:

"person" : {
    "properties" : {
        "name" : {
            "type" : "string", "store" : "yes", "include_in_all" : false
        }
    }
}

上面的示例禁用了name字段的默认行为,该行为不会成为_all字段的一部分。

否则,如果您完全不需要特定类型的_all字段,则可以在映射中再次这样禁用它:

"person" : {
    "_all" : {"enabled" : false},
    "properties" : {
        "name" : {
            "type" : "string", "store" : "yes"
        }
    }
}

禁用它时,您的字段仍将被单独索引,但是您将没有_all提供的包罗万象的功能。然后,您将需要查询您的特定字段,而不是依赖_all特殊字段。实际上,当您查询并且不指定字段时,elasticsearch将查询_all字段,除非您覆盖要查询的默认字段。

2020-06-22