弹性搜索 - 来自多个嵌套字段的不同元素

时间:2015-10-16 12:51:56

标签: elasticsearch

我使用elasticsearch创建了映射。这是映射属性

"properties": {
         "userPermissions": {
            "type": "nested",
            "properties": {
                "prm": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                }
            }
           },
         "pSPermissions": {
            "type": "nested",
            "properties": {
                "prm": {
                "type": "string"
                },
                "id": {
                "type": "string"
                }
            }
         }
      }

我想从这些字段中检索整体不同的项目:userPermissions.idpSPermissions.id

我可以在单个path下实现多个字段的不同值。我们需要使用脚本从多个字段中检索术语。

GET / permissions / perm / _search?pretty = true& search_type = count

    {
      "aggs": {
        "Parents": {
          "nested": {
            "path": "userPermissions"
          },
          "aggs": {
            "permCount": {
              "terms": {
                "script": "[doc['userPermissions.id'].value,doc['userPermissions.prm'].value]",
                "size": 5000
              }
            }
          }
        }
      }
    }

但我不知道如何跨越不同路径userPermissionspSPermissions实现目标。它可以实现吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下脚本实现它:

barbar

它的作用是检索所有Bar值和所有"script": "doc['userPermissions.id'].values + doc['userPermissions.prm'].values", 值,然后使用groovy的userPermissions.id运算符将它们连接成一个数组。

<强>更新

跟进您的评论,您可以使用此脚本以与您在相同路径下的字段所做的类似方式实现您想要的目标:

userPermissions.prm