2

次のようなインデックスがあります。

{
    "mappings":{
        "authors":{
            "properties":{
                "books":{
                    "type":"nested",
                    "properties":{
                        "title":{"type":"string"},
                        "firstSentence":{"type":"string"},
                        "isbn":{"type":"string"},
                        "publishDate":{"type":"date"},
                    }
                },
                "firstName":{"type":"string"},
                "lastName":{"type":"string"}, 
                "birthday":{"type":"date"},
                }
           }
}

Java クライアントを介してこのインデックスを照会しています。このクエリでは、作成者は気にしません。私が取り戻したいのは本だけです。たとえば、タイトルと最初の文に「Hello」という単語が含まれるすべての本を検索したいとします。

現在、著者のリストを返すネストされたクエリを使用しており、そのリストを手動で解析して書籍を取得しています。Elasticsearch が本のリストを直接返すようにする方法はありますか? Elasticsearch バージョン 1.5.2 と Jest 0.1.6 を使用しています

4

1 に答える 1

2

いいえ、結果は挿入したドキュメントです。ソース フィルタリングを使用して、返されるドキュメントのフィールドを制限できます。これにより、ネストされたドキュメントのみを取得できます。ただし、これらは常にネストされた親のスコープ内にあります。したがって、それぞれ数冊の本を持つ 2 人の著者を見つけた場合、ネストされたドキュメントを含む 2 つの結果が返されます。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html#search-request-source-filtering

于 2016-07-16T08:36:57.473 に答える