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

标签 indexing elasticsearch lucene

如果我在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/

相关文章:

elasticsearch - Elasticsearch:搜索简单的 'a'字符时不返回结果

java - 尝试启动 Apache Solr 时出现 "Nothing to start"

MySQL 查询在登台服务器上的运行速度比本地开发机器慢 5 倍

spring-boot - AbstractElasticsearchRepository:无法加载elasticsearch节点:MapperParsingException:找不到字段的分析器[autocomplete_index]

database - Access : Names of Indices

logging - logstash/kibana中的子查询或类似查询?

solr - 查询Lucene中的任何字段?

syntax - 在 Solr 查询中使用 AND、OR 和 NOT

用于绝对值的 Python numpy bool 掩码

java - 是否可以通过命令提示符创建 Solr 索引?