如果我在ES中索引了一个简单的对象
{ "name" : "Mark", "age" : 30}
然后将另一个对象添加到同一索引
{ "name" : "Bill", "age" : "forty"}
映射将无法更新,新对象将无法建立索引。根据elasticsearch的文档
"once a field has been added, its type can not change. For example, if we added age and its value is a number, then it can’t be treated as a string."
有什么办法可以解决这些相似的
people
对象在同一索引下存在(并且可搜索)的问题?
最佳答案
恐怕你做不到。因为一旦声明了字段的类型,就无法更改它,除非再次为整个数据集重新编制索引。 (当然还有重构代码)。
Apache Solr也是如此。
一种选择是引入一个新字段(age_in_string),并用所需的值“30”和“tyty”填充该字段。您可以搜索。
关于indexing - 处理现有字段类型的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580689/