4

今、フィールドでIDを検索したい。

builder.startObject().startObject(TYPE_SERIES).startObject("properties");

    builder.startObject(ID)
            .field("type", "long")
            .field("store", "yes")
            .field("index", "analyzed")
            .field("analyzer", "test_analyzer")
            .endObject();

    builder.startObject(TITLE)
            .field("type", "string")
            .field("store", "yes")
            .field("index", "analyzed")
            .field("analyzer", "test_analyzer")
            .field("boost", "10")
            .endObject();

次のようにIDを検索しようとしました:

.setQuery(QueryBuilders.multiMatchQuery(query, 
                       ID, TITLE))

ところで、id で結果を取得できますが、タイトルで検索することはできません。結果を取得するために id でのみ検索します。

ということで、こんな感じに変更。MultiSearchResponse を使用して、2 つの子のクエリを実行しようとしました。

一つは

.setQuery(QueryBuilders.idsQuery(TYPE).ids(query))

もう一つは

.setQuery(QueryBuilders.multiMatchQuery(query, 
                                            TITLE,DESCRIPTION))

残念ながら、タイトルまたは説明で結果を取得するだけです。IDで検索しても結果が出ません。

================ このように実行したい

curl -XGET localhost:9200/test/series/99

IDで結果を取得したい。残念ながら、JAVA API でこのコードを作成する方法がよくわかりません。

私にお知らせください。ありがとう。

4

2 に答える 2

3

検索できる _id フィールドがあります。そのため、curl http://localhost:9200/_search?q=_id:99+AND+_type:series+AND+_index:testorhttp://localhost:9200/test/series/_search?q=_id:99でうまくいくはずです。

于 2013-07-18T13:37:12.087 に答える
3

前の人々が言っ​​たように、完全な例が役に立ちます。しかし、探しているドキュメント タイプが「シリーズ」であるとしましょう。

.setQuery(QueryBuilders.idsQuery("series").addIds("99"));

またはもう少し完全:

SearchResponse esResponse = esClient.prepareSearch("test")
                .setQuery(QueryBuilders.idsQuery("series").addIds("99"))
                .execute().actionGet();
于 2015-07-29T22:46:07.560 に答える