我是弹性搜索中的新鲜蜜蜂,我试图通过聚合查询弹性搜索中的文档。查询如下所示:
{
"size": 25000,
"query": {
"filtered": {
"query": {
"bool": {
"must_not": {
"term": {
"vlanId": [
2,
4,
8,
12,
16,
28,
0,
20,
24,
44,
544
]
}
}
}
},
"filter": {
"bool": {
"must": {
"exists": {
"field": "ipv4"
}
}
}
}
}
},
"aggregations": {
"vlan_ids": {
"terms": {
"field": "vlanId"
},
"aggregations": {
"top": {
"top_hits": {
"from": 0,
"size": 10,
"explain": true
}
}
}
}
}
}
执行后,我收到Failed to execute phase [query], all shards failed
例外。我正在使用Java API和elasticsearch 1.4v。任何领导都非常感激。
以下是JSON示例:
{ "_index":"vlan-active", "_source":{ "vlanId":8, "port":3, "vlanIP":"10.16.8.102", "ipv4":"10.16.8.102", "ipv6":"", "mac":"", "vendorName":"","os":""}}
答案 0 :(得分:2)
term
查询会将字段与单个值匹配。
为了匹配in clause
等多个值,应使用terms
代替term
。
我将关键字term
更改为terms
并使其正常运行。
答案 1 :(得分:0)
您的查询以方括号(“[]”)开头和结尾,这就是它无效的原因。 DSL查询应以大括号(即“{}”)
开头编辑:由于我的修辞问题而消除了混乱