当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch筛选/计数嵌套字段

农鸿德
2023-03-14

我的文档具有如下所示的嵌套字段:

...
"results": [
  {
    "id": "1234",
    "name": "asdf"
  },
  {
    "id": "5678",
    "name": "jklö"
  }
],
"ip": "1.2.3.4"
...

嵌套字段的映射如下所示:

"results": {
  "type": "nested",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  }
}

在切换到ElasticSearch2之前,我使用aggs查询了没有结果的文档。以下是查询的聚合部分:

"aggs": {
  "no_result": {
    "filter": {
      "missing": {
        "field": "results"
      }
    },
    "aggs": {
      "count": {
        "value_count": {
          "field": "ip"
        }
      }
    }
  }
}

现在我切换到了ElasticSerach2,它只计算所有文档。我已经尝试了不同的方法,比如计算所有文档和计算结果,这样我就可以减去结果,但是

"aggs": {
  "results_count": {
    "value_count": {
      "field": "results"
    }
  }
}

总是0

如何正确筛选/计算嵌套字段?

共有1个答案

曹乐意
2023-03-14

如果想要计算有结果的文档的数量,可以这样做。

{
  "size": 0,
  "aggs": {
    "count": {
      "nested": {
        "path": "results"
      },
      "aggs": {
        "top_reverse_nested": {
          "reverse_nested": {}
        }
      }
    }
  }
}

数字计数将在top_reserve_nested doc_count中

 类似资料:
  • 我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?

  • 我试图构造一个ElasticSearch查询,但没有得到预期的结果。任何帮助都将不胜感激! 映射详细信息: null null 目前,每个嵌套的轮班文档都包含一个嵌套的calendarBlock文档,其中包含开始和结束日期时间字段,以及一个可以注册该轮班的最大志愿者人数字段。 查询 我试图构造的查询是经过筛选的查询。从Web上的窗体传入查询字符串。然后,我需要以编程方式将至少三个筛选器附加到这个查

  • 好的,今天我遇到了一个问题,要过滤一个带有双重嵌套非相关字段和的elasticsearch查询。 这些字段的映射:

  • null 我也尝试使用scripted_field,但是脚本字段似乎是在最后一个阶段计算的,在查询过程中不可用。 我也有一个按照相同逻辑进行排序的方法(根据给定仓库中库存的总和对产品进行排序),它像一个魅力一样工作: 但我也找不到访问此排序值的方法:(

  • 好吧,这一个对你们中的一个超级棒的弹性搜索专家来说可能不会太难。我得到了这个嵌套查询,我希望嵌套查询在一个非嵌套字段(状态)上进行过滤。我不知道把过滤器放在哪里。我试着把它放在一个查询中(如下),但没有给出正确的结果。你能帮我吗?

  • 问题内容: 我有带有嵌套字段的文档,如下所示: 嵌套字段的映射如下所示: 在切换到elasticsearch 2之前,我有一个带有aggs的查询,该查询计算了没有结果的文档。这是查询的聚合部分: 现在我切换到elasticserach 2,它只计算所有文档。我已经尝试过其他操作,例如计算所有文档和计算结果,以便可以减去结果,但是 总是0 如何正确过滤/计数嵌套字段? 问题答案: 如果您要计算产生结