Elasticsearch:如何在查询中使用聚合?

时间:2017-03-02 13:28:37

标签: java json elasticsearch

我是弹性搜索中的新鲜蜜蜂,我试图通过聚合查询弹性搜索中的文档。查询如下所示:

{ "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":""}}

2 个答案:

答案 0 :(得分:2)

term查询会将字段与单个值匹配。 为了匹配in clause等多个值,应使用terms代替term

我将关键字term更改为terms并使其正常运行。

答案 1 :(得分:0)

您的查询以方括号(“[]”)开头和结尾,这就是它无效的原因。 DSL查询应以大括号(即“{}”)

开头

编辑:由于我的修辞问题而消除了混乱