gpt4 book ai didi

java - elasticsearch:找不到索引数据(单元节点已关闭)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:28 24 4
gpt4 key购买 nike

我正在尝试开始使用 elasticsearch(一直是 compass 的长期用户),但我在基础知识方面遇到了一些非常严重的问题,这非常令人沮丧。

我目前面临的问题是索引数据直到节点关闭后才会显示。这是我的代码示例

Node node = nodeBuilder().node();
Client client = node.client();

client.prepareIndex("index1", "type1", "1").setSource("{ \"name\": \"Aaron\"}").execute().actionGet();
client.prepareIndex("index1", "type1", "2").setSource("{ \"name\": \"Andrew\"}").execute().actionGet();
client.prepareIndex("index1", "type1", "3").setSource("{ \"name\": \"Alistair\"}").execute().actionGet();

QueryBuilder queryBuilder = QueryBuilders.wildcardQuery("name", "a*");
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("index1");
searchRequestBuilder.setTypes("type1");
searchRequestBuilder.setSearchType(SearchType.DEFAULT);
searchRequestBuilder.setQuery(queryBuilder);

SearchResponse response = searchRequestBuilder.execute().actionGet();
System.out.println("Response contains " + response.getHits().totalHits() + " hits");
for (SearchHit currentHit : response.getHits())
{
System.out.println(currentHit.getSourceAsString());
}

client.close();
node.close();

我第一次运行它时,它在搜索中找不到任何匹配项。但是,如果我再次运行它 - 它确实找到了所有以字母“A”开头的名称(不要让我开始索引项目的自动小写,而不是搜索 - 这花了我一个多小时).

如果我删除关闭,无论我运行多少次以上我都找不到结果。但是,如果我添加关闭语句,它会第二次(每次)起作用。

感觉像是与未刷新的缓冲索引更改有关?

我确信我遗漏了一些明显和基本的东西。但我就是不能指手画脚。

最佳答案

您想refresh在您能够搜索最新更改之前的索引。将其放在索引之后,执行搜索之前:

client.admin().indices().prepareRefresh("index1").execute().actionGet();

在默认设置下,Elasticsearch 将每隔 1 秒定期调用 refresh

关于java - elasticsearch:找不到索引数据(单元节点已关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023359/

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