Elasticsearch'te bir toplayıcıyla bağlantılı olarak nasıl bir filtre kullanabilirim?Birden çok filtre ve bir araya getirme elasticsearch
Resmi belgeler, filter ve aggregations için yalnızca önemsiz örnekler verir ve dsl sorgusunun resmi bir açıklaması yoktur - karşılaştırın, örn. postgres documentation ile.
ben elasticsearch (hayır ayrıştırma hataları) tarafından kabul edilen şu sorguyu bulundu deneyerek sayesindeama yok sayar verilen filtreler:
{
"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
]
}
}
}
}
}
}
Bazı insanlar yerine filter
ait query
kullanmanızı öneririz. Ancak resmi belgeler, tam değerleri filtrelemek için genellikle the opposite'u önerir. query
ile ilgili başka bir sorun: filtreler bir and
, query
içermez. Birisi bana, önemsiz olmayan sorguları yazmayı açıklayan belgelere, bloga veya kitaba işaret edebilir: en az bir toplu artı çoklu filtre.
muhtemelen en sevdiğim kişisin. Bununla saatlerce savaşıyordum. – simonmorley
Bu çözümde, top aggr alanı "filtrelenmiş" olarak adlandırılır ve bu, http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html ile karıştırılmamalıdır, öyleyse lütfen başka bir isim kullanın (örn. "aggresults") - bu ismin altında cevap olarak sonuç alacaktır. Lütfen referansı kontrol edin: http://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-filter-aggregation.html ve answer http://stackoverflow.com/a/24823895/565525 . –
ES 5.x ile çalışır, şerefe! –