java - Elasticsearch Java API 2.3 问题

标签 java elasticsearch elasticsearch-java-api

社区: 最近,当我在使用 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/

相关文章:

elasticsearch - 在 Elasticsearch 中使用过滤器查询聚合嵌套字段

amazon-web-services - 是否不需要将负载均衡器与 ElasticSearch 一起使用?

elasticsearch - 如何使用Elasticsearch Java RestHighLevelClient API创建 bool 查询

java - 如何根据要插入的文档在 Elasticsearch 中使用不同的分析器?

java - ElasticSearch Java API 查询生成器

java - 如何将结果集映射到 JPA 中的自定义 POJO

java - JSONSerializer.toJSON 结果为空

java - 我在哪里可以下载 JBoss AS7 文档?

java - 如何在jtree中显示数据

mysql - 使用 ElasticSearch JDBC river 从表中获取更改