24

検索を行うと、Elasticsearchはさまざまなメタ情報を含むデータ構造を返します。

実際の結果セットは、データベースから返されたJSON結果内の「ヒット」フィールドに含まれています。

Elasticsearchが他のすべてのメタデータに埋め込まれることなく、必要なデータ(当時の「ヒット」フィールドの内容)のみを返すことは可能ですか?

結果をJSONに解析して抽出できることはわかっていますが、複雑さ、煩わしさ、パフォーマンスの低下は望んでいません。

ありがとう!

Elasticsearchが返すデータ構造の例を次に示します。

{
    "_shards":{
        "total" : 5,
        "successful" : 5,
        "failed" : 0
    },
    "hits":{
        "total" : 1,
        "hits" : [
            {
                "_index" : "twitter",
                "_type" : "tweet",
                "_id" : "1", 
                "_source" : {
                    "user" : "kimchy",
                    "postDate" : "2009-11-15T14:12:12",
                    "message" : "trying out Elastic Search"
                }
            }
        ]
    }
}
4

2 に答える 2

26

結果を抽出できなくても、少なくとも結果をフィルタリングすることはできます。REST APIの「共通オプション」ページでは、「filter_path」オプションについて説明しています。これにより、関心のあるツリーの部分のみをフィルタリングできます。ツリー構造は同じですが、追加のメタデータはありません。

私は通常、クエリ オプションを追加します。

&filter_path=hits.hits.*,aggregations.*

ドキュメントには、これによりクエリが高速化されることについては何も記載されていませんが (そうであるとは思えません)、少なくとも興味深い部分のみを返すことができます。

  • トップレベルの「ヒット」にもメタデータがあるため、hits.hits.* のみを表示するように修正されました。
于 2015-11-16T22:57:17.313 に答える
12

いいえ、現時点ではできません。解析のパフォーマンスと複雑さが主な懸念事項である場合は、別のクライアントの使用を検討することをお勧めします。たとえば、Java クライアントThrift プラグインなどです。

于 2012-06-02T16:27:12.077 に答える