Indexing 处理现有字段类型的更改?
如果我有一个简单的对象在ES中索引Indexing 处理现有字段类型的更改?,indexing,
elasticsearch,lucene,Indexing,
elasticsearch,Lucene,如果我有一个简单的对象在ES中索引 { "name" : "Mark", "age" : 30} 然后另一个对象被添加到同一个索引中 { "name" : "Bill", "age" : "forty"} 映射将无法更新,新对象将不会被索引。根据elasticsearch文档 添加字段后,其类型不能更改。例如,如果我们添加了年龄,并且其值为数字,则不能将其视为字符串 有没有办法让这些类似的人对象在同一个索引下存在(并且可以搜索)?恐怕你做不到。因为一旦声明了字段的类型,就不能在不重新索引整个
{ "name" : "Mark", "age" : 30}
然后另一个对象被添加到同一个索引中
{ "name" : "Bill", "age" : "forty"}
映射将无法更新,新对象将不会被索引。根据elasticsearch文档
添加字段后,其类型不能更改。例如,如果我们添加了年龄,并且其值为数字,则不能将其视为字符串
有没有办法让这些类似的
人
对象在同一个索引下存在(并且可以搜索)?恐怕你做不到。因为一旦声明了字段的类型,就不能在不重新索引整个数据集的情况下对其进行更改。(当然还有重构代码)
Apache Solr也是如此
一个选项是引入一个新字段(字符串中的年龄),并用您想要的值填充它:“30”和“40”。你可以在上面搜索。恐怕你做不到。因为一旦声明了字段的类型,就不能在不重新索引整个数据集的情况下对其进行更改。(当然还有重构代码) Apache Solr也是如此
一个选项是引入一个新字段(字符串中的年龄),并用您想要的值填充它:“30”和“40”。你可以在上面搜索。恐怕你做不到。因为一旦声明了字段的类型,就不能在不重新索引整个数据集的情况下对其进行更改。(当然还有重构代码) Apache Solr也是如此
一个选项是引入一个新字段(字符串中的年龄),并用您想要的值填充它:“30”和“40”。你可以在上面搜索。恐怕你做不到。因为一旦声明了字段的类型,就不能在不重新索引整个数据集的情况下对其进行更改。(当然还有重构代码) Apache Solr也是如此
一个选项是引入一个新字段(字符串中的年龄),并用您想要的值填充它:“30”和“40”。你可以在上面搜索。我只是用
age
字段在cross中获取我的想法。我实际上想的是允许任意数量的字段更改,根据您的解释,这显然是不可能的。如果我走另一条路,重新编制所有数据的索引,那么以前索引的文档(其中age
是一个数字)将被忽略,而新文档将age
作为一个字符串,我这样想对吗?我只是使用age
字段来获得我的想法。我实际上想的是允许任意数量的字段更改,根据您的解释,这显然是不可能的。如果我走另一条路,重新编制所有数据的索引,那么以前索引的文档(其中age
是一个数字)将被忽略,而新文档将age
作为一个字符串,我这样想对吗?我只是使用age
字段来获得我的想法。我实际上想的是允许任意数量的字段更改,根据您的解释,这显然是不可能的。如果我走另一条路,重新编制所有数据的索引,那么以前索引的文档(其中age
是一个数字)将被忽略,而新文档将age
作为一个字符串,我这样想对吗?我只是使用age
字段来获得我的想法。我实际上想的是允许任意数量的字段更改,根据您的解释,这显然是不可能的。如果我走另一条路,重新编制所有数据的索引,那么以前的索引文档(其中age
是一个数字)将被忽略,而新文档将age
作为一个字符串,我这样想对吗?