Elasticsearch:常量数据字段类型

时间:2019-06-20 15:34:54

标签: elasticsearch datafield

是否有一种方法可以将Elasticsearch数据字段添加到索引映射中,从而使其始终返回恒定的数值?

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


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

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

1 个答案:

答案 0 :(得分: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

检索索引映射来随时检索。