Фильтрация Elasticsearch с данными диапазона дат и запросом must_not bool
Я хочу извлечь следующий запрос sql в asticsearch.
Select *
from someTable
Where @timestamp < some_date and @timestamp >= some_other_date
and dst != '-'
А затем сделайте несколько агрегаций по возвращенным документам. Часть агрегации я разобрался и отлично работает. Но я не фильтрую документы должным образом. Я попытался следующий запрос, но я получаю документы с dst = '-', которые в свою очередь вычисляются в агрегации.
Запрос
"query": {
"bool": {
"must_not": {
"term": {
"dst": '-'
}
},
"filter":{
"range":{
"@timestamp":{
"gte":"a date",
"lt": "another date"
}
}
}
}
}
Я делаю что-то неправильно. Я установил размер 0, потому что я использую агрегаты (здесь не показано). Elasticsearch ver2.4 и библиотека pythonasticsearch.
Я знаю, что это не работает, потому что результаты агрегации содержат значения из документов, которые dst является '-"
1 ответ
Это поле не должно анализироваться, так как оно удаляет анализатор - char из поля в индексе.
Если вам нужно проанализировать это поле по другой причине, используйте несколько полей. https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html