gpt4 book ai didi

java - 如何使用 Elasticsearch 进行索引和搜索

转载 作者:行者123 更新时间:2023-12-01 13:35:39 24 4
gpt4 key购买 nike

IndexResponse response = client.prepareIndex("face", "book","1")
.setSource(jsonBuilder()
.startObject()
.field("name", "kimchy")
.field("postDate", "2010-03-01")
.field("message", "trying out Elastic Search")
.endObject()
)
.execute()
.actionGet();
String index = response.getIndex(); // index : "face"

SearchResponse r = client.prepareSearch("face")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.termQuery("name","kimchy"))
.setFrom(0).setSize(60).setExplain(true)
.execute()
.actionGet();
System.out.println(r);
SearchHit[] hits = r.getHits().getHits();
System.out.println(hits.length); // 0 Hits
for (SearchHit searchHit : hits) {
// no hits no data
}

我该如何解决这个问题,问题出在哪里?我的每次尝试都获得了 0 次点击。我尝试了所有方法,但无法修复。如果有人帮助我修复此代码,我会很高兴。如果我写 prepareIndex("twitter", "tweet","1") 和 client.prepareIndex (“twitter”,“tweet”,“1”)它给了我一些结果,但我认为这是默认结果。我想搜索我想要的特定单词。

最佳答案

问题在于搜索几乎是实时进行的,这意味着在对文档建立索引后需要进行刷新才能使其可用于搜索。

默认情况下每秒自动刷新一次,但在测试中,您需要手动调用刷新以确保找到文档,或者切换到使用实时工作的 get api,以确保找到文档文档存在,通过 id 取回它。

如果添加刷新,可以调用刷新 API 或在索引操作中添加刷新标志,以便在文档建立索引后进行刷新。请记住,这是测试时的良好做法,但在生产中,您的代码不应手动调用刷新,只需让自动刷新每秒启动即可。

关于java - 如何使用 Elasticsearch 进行索引和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293985/

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