java - Elasticsearch,文档中数组大小的总和

标签 java elasticsearch

我是 Elasticsearch 的新手,我正在使用 Java High Level Rest Client。 我有内部包含数组的文档,并且我想要索引中所有文档中特定字段的数组大小的总和,但我不知道该怎么做。 我的文件示例: { 名称:'abc', 姓氏:'def', 书籍:[ { 第一本书 },{第二本书},{第三本书} ] } 我需要所有文档中“书籍”字段大小的总和。

最佳答案

您可以使用scripted_metric为此进行聚合

查询:

GET index31/_search
{
  "size": 0, 
  "aggs": {
    "doc_length": {
      "scripted_metric": {
        "init_script": {
          "source": "state.commits = []"
        },
        "map_script": {
          "source": "state.commits.add(doc['books'].length)"
        },
        "combine_script": {
          "source": "def sum = 0.0; for (c in state.commits) { sum += c } return sum"
        },
        "reduce_script": {
          "source": "def sum = 0.0; for (a in states) { sum += a } return sum"
        }
      }
    }
  }
}

关于java - Elasticsearch,文档中数组大小的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476847/

相关文章:

java - Android 应用程序的 MVC 逻辑

regex - 如何使用部分查询字符串从 Elasticsearch 中获取文档?

laravel - 如何对部分Elasticsearch查询进行全文搜索匹配

java - 展开和折叠重复叶节点的 Extjs 树面板不正确行为

java - 如何使用 Java 在 Selenium WebDriver 中将鼠标移动到元素上来设置焦点?

java - 更新插入文档时索引未更新

python方法具有1个变量的嵌套字典

elasticsearch - 如何在Elasticsearch中的列表中的所有元素上应用 bool 查询?

java - 错误 : Could not create the Java Virtual Machine

java - 将输入的单词数字(如七)转换为字符(如@)