gpt4 book ai didi

elasticsearch - Elasticsearch-preIndex

转载 作者:行者123 更新时间:2023-12-02 22:26:10 25 4
gpt4 key购买 nike

我正在执行一项维护任务,该任务将拦截ES索引操作,并且在某些情况下会更改字段的内容。

我的问题是:如何处理文件?有一个index.docs()方法。例如,我获取第一个(也是唯一一个)文档,添加一个字段,然后希望将其保留,但是不幸的是,该字段不会被设置或删除。

例:

indexingService.addListener(new IndexingOperationListener() {

@Override
public Index preIndex(Engine.Index index) {

List<Document> docs = index.docs();

List<Document> finalDocs = new ArrayList<Document>();

for (Document d : docs) {

d.removeField("field1");

finalDocs.add(d);
}

index.docs().clear();

index.docs().addAll(finalDocs);

return index;

}

});

我做错了什么?被删除的字段将不会被持久化:(

感谢您的提示!

最佳答案

尽管IndexingOperationListener并非旨在修改文档,但该代码看起来不错。唯一的事情是,您仅修改了已建立索引的lucene文档,其中不包含要删除的字段。如果您不想在源代码中使用它,也必须修改源代码。但我认为,即使您在文档中看到了该字段,也无法对其进行实际搜索,因为它不在lucene中。如果您可以搜索并获得结果,则需要确保您的自定义代码实际运行。

另外,您无需清除列表并再次添加所有文档。您只需要修改循环中的文档即可。

关于elasticsearch - Elasticsearch-preIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18823546/

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