1

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

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


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

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

4

1 回答 1

2

您可以为此目的使用该_meta字段:

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

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

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

于 2019-06-21T05:04:41.377 回答