使用日期范围数据和 must_not 布尔查询进行 Elasticsearch 过滤
Elasticsearch filtering with date range data and a must_not bool query
我想提取以下 sql 查询到 elasticsearch。
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 和 python elasticsearch 库。
我知道它不起作用,因为聚合结果包含来自 dst 为“-”的文档的值
不应分析此字段,因为分析器会从索引中的字段中删除 - char。
如果您出于其他原因需要分析此字段,请使用多字段。
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html
我想提取以下 sql 查询到 elasticsearch。
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 和 python elasticsearch 库。
我知道它不起作用,因为聚合结果包含来自 dst 为“-”的文档的值
不应分析此字段,因为分析器会从索引中的字段中删除 - char。
如果您出于其他原因需要分析此字段,请使用多字段。 https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html