0

コミュニティ: 最近、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;
        }
    }   


}



 }
4

1 に答える 1

1

メソッドとインポートがどのように機能するか知っていますか? simpleQueryStringQueryクラスに呼び出されたメソッドがなく、そのメソッドをインポートしていないため、エラーが発生します。

あなたが本当に欲しいのは:どちらかを使うQueryBuilders.simpleQueryStringQuery("...")

または、静的インポートを使用しますQueryBuilders.simpleQueryStringQuery。参照: http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.htmlまたはhttps://en.wikipedia.org/wiki/Static_import

于 2016-06-02T20:49:06.940 に答える