我尝试使用以下查询来删除ElasticSearch索引中的数据。
{
"filter": {
"and": [
{
"range": {
"Time": {
"from": "20120101T000000",
"to": "20120331T000000"
}
}
},
{
"term": {
"Source": 1
}
}
]
}
}
我试图根据此查询删除文档。当我针对索引运行它时,此查询返回结果。但是当我尝试对索引运行删除命令时,没有任何反应。
我不确定我是在构建错误的查询还是其他什么。
答案 0 :(得分:10)
delete by query API可能需要查询时,您只使用过滤器。您可以使用filtered query将过滤器转换为查询:
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter": {
"and": [
{
"range": {
"Time": {
"from": "20120101T000000",
"to": "20120331T000000"
}
}
},
{
"term": {
"Source": 1
}
}
]
}
}
}
否则,您可以使用带有两个必须子句的bool query将过滤器转换为查询,这样您就不再需要过滤查询了。无论如何,我猜过滤器方法更好,因为过滤器更快。