Làm cách nào để sử dụng bộ lọc có liên quan đến tổng hợp trong elasticsearch?Nhiều bộ lọc và tổng hợp trong elasticsearch
Các tài liệu chính thức cho phép chỉ là ví dụ nhỏ cho filter và cho aggregations và không mô tả chính thức của dsl truy vấn - so sánh nó ví dụ với postgres documentation.
Qua thử tôi thấy truy vấn sau đây, được chấp nhận bởi elasticsearch (không có lỗi phân tích cú pháp), nhưng bỏ qua các bộ lọc đưa ra:
{
"filter": {
"and": [
{
"term": {
"_type": "logs"
}
},
{
"term": {
"dc": "eu-west-12"
}
},
{
"term": {
"status": "204"
}
},
{
"range": {
"@timestamp": {
"from": 1398169707,
"to": 1400761707
}
}
}
]
},
"size": 0,
"aggs": {
"time_histo": {
"date_histogram": {
"field": "@timestamp",
"interval": "1h"
},
"aggs": {
"name": {
"percentiles": {
"field": "upstream_response_time",
"percents": [
98.0
]
}
}
}
}
}
}
Một số người đề nghị sử dụng query
thay vì filter
. Nhưng tài liệu chính thức thường đề xuất the opposite để lọc các giá trị chính xác. Một vấn đề khác với query
: trong khi bộ lọc cung cấp and
, query
thì không.
Ai đó có thể chỉ cho tôi tài liệu, blog hoặc sách mô tả cách viết các truy vấn không tầm thường: ít nhất một bộ lọc tổng hợp cộng với nhiều bộ lọc.
bạn có thể là người yêu thích của tôi ngay bây giờ. Đã chiến đấu với điều này trong nhiều giờ. – simonmorley
Trong giải pháp này lĩnh vực aggr hàng đầu được đặt tên là "lọc", và điều đó không nên được trộn lẫn với http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html, vì vậy hãy sử dụng một số tên khác (ví dụ như "aggresults") - dưới tên đó bạn sẽ nhận được kết quả trả lời. Vui lòng kiểm tra tham chiếu: http://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-filter-aggregation.html và trả lời http://stackoverflow.com/a/24823895/565525 . –
Làm việc với ES 5.x, chúc mừng !! –