【问题标题】:Elasticsearch: Constant Data Field TypeElasticsearch:常量数据字段类型
【发布时间】:2019-06-20 15:34:54
【问题描述】:

有没有办法将 Elasticsearch 数据字段添加到索引映射中,使其始终返回一个常量数值?

我知道我可以只添加一个数字数据类型,然后使用常量重新索引所有内容,但我想避免重新索引,并且我还希望能够在不重新索引的情况下动态更改常量。


动机:我们的集群有很多不同的索引。由于各种原因,我们经常一次搜索多个索引。但是,当搜索多个索引时,我们的搜索逻辑仍然需要对每个索引进行略微不同的处理。我们可以做到这一点的一种方法是向每个索引添加一个常量数字字段,然后在我们的搜索查询中使用该字段。

但是,因为这是一个常量,所以我们似乎不需要重新索引所有内容(为每条记录添加一个常量值似乎毫无意义)。

【问题讨论】:

    标签: elasticsearch datafield


    【解决方案1】:

    您可以为此目的使用_meta field

    PUT index1
    {
      "mappings": {
        "_meta": { 
          "constant": 1
        },
        "properties": {
          ... your fields
        }
      }
    }
    
    PUT index2
    {
      "mappings": {
        "_meta": { 
          "constant": 2
        },
        "properties": {
          ... your fields
        }
      }
    }
    

    您可以随时更改该常量值,而无需重新索引任何内容。该值存储在索引级别,可以随时通过使用GET index1,index2/_mapping检索索引映射来检索

    【讨论】:

    • 但是您可以在查询中使用_meta 吗?我们需要按照(_meta.constant=1 AND text=apple) OR (_meta.constant=2 AND text=orange) 的方式运行查询
    • 不,你不能,我们既然每个索引都有一个常量值,为什么不首先在查询中使用索引名称呢?
    • 目前有任何反馈吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2022-01-27
    • 2017-11-25
    相关资源
    最近更新 更多