处理现有字段类型的更改?

时间:2014-02-05 14:58:54

标签: indexing elasticsearch lucene

如果我在ES

中索引了一个简单的对象
{ "name" : "Mark", "age" : 30}

然后将另一个对象添加到同一索引

{ "name" : "Bill", "age" : "forty"}

映射无法更新,新对象不会被索引。根据elasticsearch docs

  

“一旦添加了一个字段,它的类型就不会改变。例如,如果我们添加了age并且它的值是一个数字,那么它就不能被视为一个字符串。”

有没有办法让这些类似的people对象在相同的索引下存在(并且可以搜索)?

1 个答案:

答案 0 :(得分:3)

我担心你不能这样做。因为一旦声明了字段的类型,就不能在不重新索引整个数据集的情况下更改它。 (当然,重构你的代码)。

对于Apache Solr也是如此。

一个选项可能是引入一个新字段(age_in_string)并使用您想要的值填充它:“30”和“40”。你可以搜索它。