gpt4 book ai didi

java - ElasticSearch:更新后紧跟查询(Java API)

转载 作者:行者123 更新时间:2023-12-01 12:30:00 26 4
gpt4 key购买 nike

我们正在使用 Elasticsearch 。本质上,我需要插入一条记录,然后查询数据并可靠地返回最近插入的行。 (这是一个导入分层数据的导入工具,当实体插入到ES中时,该工具需要检查新节点引用的现有节点)。

我尝试了一些方法。

首先,如果我在每次插入时删除并重建索引,它就会起作用(显然在现实世界中无法做到这一点)。

其次,我尝试将refresh_interval设置为-1:

 settings_map.put("index.refresh_interval", "-1");
org.elasticsearch.common.settings.Settings settings = ImmutableSettings.settingsBuilder().put(settings_map)
.build();

UpdateSettingsRequestBuilder usrb = es.admin().indices()
.prepareUpdateSettings();
usrb.setIndices("pm");
usrb.setSettings(settings);
usrb.execute().actionGet();

第三,我尝试将线程选项设置为 false:

tc.prepareUpdate(domain, type, id)).setListenerThreaded(false)...

我还看到了 setOperationThreaded 设置,但在prepareUpdate() 上似乎不可用。

<小时/>

这些似乎都没有达到预期的效果。

期望的效果是:将记录插入 ElasticSearch 后,立即运行应返回该记录的查询时,可靠地将记录包含在结果中。

最佳答案

refresh_interval设置为-1实际上禁用了自动刷新。

您可以通过将刷新参数设置为 true 来达到所需的效果,如下所示:

client.prepareUpdate(...).setRefresh(true).execute().actionGet();

这样,更新操作将在您更新后立即执行,并且可以根据您的意愿搜索更新后的文档。

注意:刷新操作成本高昂,不应在对大量文档建立索引时执行。

关于java - ElasticSearch:更新后紧跟查询(Java API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26006391/

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