【问题标题】:Elasticsearch: How to use aggregations with query?Elasticsearch:如何在查询中使用聚合?
【发布时间】:2017-03-02 13:28:37
【问题描述】:

我是弹性搜索的新手,我正在尝试通过聚合从弹性搜索中查询文档。查询如下所示:

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

【问题讨论】:

  • 能否包含您的索引配置?样本数据?
  • 没有任何异常原因吗?
  • @TIM:添加了示例 JSON。

标签: java json elasticsearch


【解决方案1】:

term 查询会将字段匹配到单个值。 为了匹配多个值,如in clause,应使用terms 而不是term

我将关键字 term 更改为 terms 并让它工作。

【讨论】:

    【解决方案2】:

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

    编辑:消除了由于我的反问引起的混乱

    【讨论】:

    • 这是一个反问,因为他的查询不可能运行。不过公平点,因为它很混乱,我会编辑它
    • 编辑了我的帖子以澄清这是一个答案
    • @clearlight:很公平,我最近开始活跃起来,我不是 100% 遵守规则。感谢您的澄清!
    • toString() 方法添加了方括号!对不起这是我的错!使用大括号,查询也不起作用。
    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 2022-01-18
    • 2020-04-03
    • 2016-10-04
    • 2014-03-28
    • 1970-01-01
    • 2014-10-22
    • 2014-11-06
    相关资源
    最近更新 更多