gpt4 book ai didi

java - Elasticsearch Java API 2.3 问题

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

社区:最近,当我在使用 Elasticsearch[2.3.1] 的项目中工作时,我尝试使用添加到项目中的 .jar(elasticsearch.2.3.1.jar) 文件中的 java API 编译对 ES 进行简单查询,但是当我接下来编码时:

QueryBuilder qb = simpleQueryStringQuery("+kimchy -elasticsearch"); 

IDE 没有识别指令“simpleQueryStringQuery("+kimchy -elasticsearch")”,但在互联网和 ES 官方网站的所有示例中都以这种形式出现。做错了什么?提前致谢。

 import java.net.InetAddress;
import java.net.UnknownHostException;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.search.sort.SortParseElement;

public class Search {


public static void main(String[] args) {
Client client;
Settings settings = Settings.settingsBuilder()
.put("client.transport.ignore_cluster_name", true).build();
try {
client = TransportClient
.builder()
.settings(settings)
.build()
.addTransportAddress(
new InetSocketTransportAddress(InetAddress
.getByName("localhost"), 9300));

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
QueryBuilder qb = simpleQueryStringQuery("+kimchy -elasticsearch");

SearchResponse scrollResp = client.prepareSearch("thing")
.addSort(SortParseElement.DOC_FIELD_NAME, SortOrder.ASC)
.setScroll(new TimeValue(60000))
.setQuery(qb)
.setSize(100).execute().actionGet(); //100 hits per shard will be returned for each scroll
//Scroll until no hits are returned
while (true) {

for (SearchHit hit : scrollResp.getHits().getHits()) {
//Handle the hit...
}
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet();
//Break condition: No hits are returned
if (scrollResp.getHits().getHits().length == 0) {
break;
}
}


}



}

最佳答案

你知道方法和导入是如何工作的吗?出现错误的原因是您的类没有名为 simpleQueryStringQuery 的方法,并且您没有导入该方法。

你真正想要的是:要么使用QueryBuilders.simpleQueryStringQuery("...")

或者对 QueryBuilders.simpleQueryStringQuery 使用静态导入。请参阅:http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.htmlhttps://en.wikipedia.org/wiki/Static_import

关于java - Elasticsearch Java API 2.3 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601657/

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