gpt4 book ai didi

lucene - 删除所有记录中的字段及其内容,并使用新映射重新创建它

转载 作者:行者123 更新时间:2023-12-03 02:09:59 26 4
gpt4 key购买 nike

我有一个field10字段,当我更新索引中的特定记录时偶然创建了该字段。我想从索引,所有内容中删除该字段,并使用以下映射重新创建它:

"mytype":{
"properties":{
"field10":{
"type":"string",
"index":"not_analyzed",
"include_in_all":"false",
"null_value":"null"
}
}
}

当我尝试使用Put Mapping API创建此映射时,出现错误: {"error":"MergeMappingException[Merge failed with failures {[mapper [field10] has different index values, mapper [field10] has different index_analyzer, mapper [field10] has different search_analyzer]}]","status":400}

如何更改此字段的映射?我不想为这次小事故重新索引数百万条记录。

谢谢

最佳答案

AFAIK,您无法删除一个字段并重新创建它。
您不能只修改映射并自动重新索引所有内容。想象一下,您不存储_source。 Elasticsearch如何在索引数据之前知道您的数据是什么样子?

但是,您可能可以通过使用旧映射的field10.field10和新分析器的field10.new的多字段来修改映射。

如果不重新编制索引,则只有新文档的field10.new中将包含内容。
如果要管理旧文档,则必须:

  • 再次发送所有文档(它将更新所有内容)-aka重新索引(您可以使用扫描和滚动API获取旧文档)
  • 尝试使用Update API
  • 更新您的文档

    您可能可以尝试运行如下查询:
    curl -XPOST localhost:9200/crunchbase/person/1/_update -d '{
    "script" : "ctx._source.field10 = ctx._source.field10"
    }'

    但是,正如您所看到的,您必须逐个文档地运行它,而且与用Bulk API重新索引所有索引相比,我认为它将花费更多的时间。

    有帮助吗?

    关于lucene - 删除所有记录中的字段及其内容,并使用新映射重新创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577837/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com