2013-05-15 8 views
8

サイズ制限のあるクエリの結果として返されるドキュメントの数をカウントします。ElasticSearch count returned results結果

curl -XGET http://localhost:9200/logs_-*/a_logs/_search?pretty=true -d ' 
{ 
"query" : { 
    "match_all" : { } 
}, 
"size" : 5, 
"from" : 8318 
}' 

と私が手に:私のクエリに一致する

{ 
"took" : 5, 
"timed_out" : false, 
"_shards" : { 
"total" : 159, 
"successful" : 159, 
"failed" : 0 
}, 
    "hits" : { 
    "total" : 8319, 
    "max_score" : 1.0, 
    "hits" : [ { 
.... 

総文書は8319ですが、私は「照会以来わずか1文書が返された最大5でフェッチ例えば、私は次のクエリを実行します。から "8318.

応答では、返されるドキュメントの数はわかりません。返されるドキュメントの数がいくつかのフィールドにも存在するようなクエリを記述したいと思います。たぶんいくつかの側面が助けになるかもしれませんが、私は理解できませんでした。親切に助けてください。

+0

クライアント側のヒット配列のオブジェクト数を数えることはできませんか? – javanna

+0

これは高価な操作です。個々のオブジェクトのカウント/処理を開始する前に、その番号を知りたい。 –

+0

その情報を元に戻す方法はありません。アイデアは、既にjsonレスポンスを解析した場合、その配列の長さを読み取るのは大きな問題ではないはずですが、大きなjsonオブジェクトを持ち、プルパーサーを使用して読み取ると、全く異なるストーリーです。 – javanna

答えて

1

実際にAPIがサポートしている場合、ドキュメントを調べると、クエリを返す方法が明確ではありません。返されたヒット数をカウントしたいのであれば、最も簡単な方法は、レスポンスを解析した後に実際にカウントすることです。

8

あなたのクエリ:5、

=>あなたは唯一の5の結果

を表示したい:

{ 
"query" : { 
    "match_all" : { } 
}, 

=>あなたはすべてのデータを尋ねること

"サイズ" を意味"from":8318

=>あなたは8318レコードから開始します

ElasticSearchのRESPONS:

....

"hits" : { 
    "total" : 8319, 

... =>弾性検索は彼のインデックスに8319件の結果があることを言いました。

あなたは彼にすべての結果を聞いて、あなたは8318.

8319からスタート - ですから、1つの結果を持っている= 1 8318。

から削除してみてください。

関連する問題