2013-05-15 53 views
8

Tôi muốn đếm số lượng tài liệu được trả lại do truy vấn có giới hạn kích thước. Ví dụ, tôi chạy sau truy vấn:Số lượng tìm kiếm được trả về kết quả là

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

và tôi nhận được:

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

Tổng số tài liệu phù hợp với truy vấn của tôi là 8319, nhưng tôi lấy tại max 5. Chỉ có 1 tài liệu được trả lại kể từ khi tôi truy vấn " từ "8318.

Trong phản hồi, tôi không biết có bao nhiêu tài liệu được trả lại. Tôi muốn viết một truy vấn sao cho số tài liệu được trả về cũng có mặt trong một số trường. Có lẽ một số khía cạnh có thể giúp đỡ, nhưng tôi không thể tìm ra. Giúp đỡ một cách tử tế.

+0

Bạn không thể đếm số đối tượng trong mảng truy cập ở phía máy khách? – javanna

+0

Đó là một hoạt động tốn kém. Tôi muốn biết số trước khi tôi bắt đầu đếm/xử lý các đối tượng riêng lẻ. –

+0

Không có cách nào để lấy lại thông tin đó. Ý tưởng là nếu bạn đã phân tích cú pháp câu trả lời json thì không phải là vấn đề lớn để đọc độ dài của mảng đó, nhưng nếu bạn có một đối tượng json lớn và bạn đọc nó bằng trình phân tích cú pháp kéo, thì đó là một câu chuyện hoàn toàn khác . – javanna

Trả lời

1

Xem qua tài liệu, không rõ cách làm cho truy vấn trả về điều này - nếu thực sự API hỗ trợ nó. Nếu bạn chỉ muốn đếm số lần truy cập được trả về, cách dễ nhất có vẻ là tự tính chúng sau khi phân tích cú pháp phản hồi.

8

truy vấn của bạn:

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

=> Có nghĩa là bạn yêu cầu tất cả dữ liệu của bạn

"kích thước": 5,

=> Bạn muốn hiển thị chỉ có 5 kết quả

"from": 8318

=> Bạn bắt đầu từ bản ghi 8318

ElasticSearch respons:

....

"hits" : { 
    "total" : 8319, 

... => tìm kiếm Elastic nói với bạn rằng có 8319 kết quả trong trỏ của mình.

Bạn hỏi anh ấy tất cả kết quả và bạn bắt đầu từ 8318.

8319 - 8318 = 1 Vì vậy, bạn có 1 kết quả.

Hãy thử bằng cách xóa từ.

Các vấn đề liên quan