代码之家  ›  专栏  ›  技术社区  ›  Richard Barraclough

ElasticSearch包含整数数组的嵌套对象

  •  0
  • Richard Barraclough  · 技术社区  · 6 年前

    这是一个带有嵌套属性的模式,其中一个属性( AncestorIds

    {
        "dynamic": "strict",
        "properties" : {
            "Id" : {
              "type": "integer"
            },
            "Name" : {
                "type": "text",
                "fields" : {
                    "keyword" : {
                        "type" : "keyword",
                        "normalizer": "normalizer_alphanumeric"
                    },
                    "text" : {
                        "type" : "text",
                        "analyzer": "english"
                    }
                }
            },
            "Menus" : {
                "type" : "nested",
                "properties" : {
                    "Id" : {
                        "type" : "integer"
                    },
                    "Name" : {
                        "type" : "keyword",
                        "normalizer": "normalizer_alphanumeric"
                    },
                    "AncestorsIds" : {
                        "type" : "integer"
                    }
                }
            }
        }
    }
    

    这是一份文件。

    {
            "Id": 12781279,
            "Name": "Thing of purpose made to fit",
            "Menus": [
                {
                    "Id": -571057,
                    "Name": "Top level menu",
                    "AncestorsIds": [
                        -571057
                    ]
                }
                ,
                {
                    "Id": 1022313,
                    "Name": "Other",
                    "AncestorsIds": [
                        -571057
                        ,
                        1022313
                    ]
                }
            ]
    }
    

    在供应商的目录中,一个产品可以在他们的菜单继承权中的不止一个位置,因此 Menus

    UI为菜单和树中的每个条目(不仅仅是叶子)显示了一个树,我需要从搜索中获得匹配文档的数量。对于id为的菜单项 z 这是已删除的匹配文档数 在 Menus.AncestorIds 菜单

    这可能吗?

    我有这个,但是改变了 Menus.Id 菜单.antestorids 不起作用。

    "aggs":{
        "menus": {
          "nested": {
            "path": "Menus"
          },
          "aggs":{
            "menu_aggregation": {
            "terms": {
              "field": "Menus.Id",
              "size": 10
              }
            }
          }
        }
      }
    

    [
        {
                "Id": 1,
                "Name": "Thing of purpose made to fit",
                "Menus": [
                    {"Id": 10, "Name": "Top level menu", "AncestorsIds": [10]},
                    {"Id": 12, "Name": "Top level menu", "AncestorsIds": [10, 11, 12]}
                ]
        },
        {
                "Id": 2,
                "Name": "Thing of purpose made to fit differently",
                "Menus": [
                    {"Id": 10, "Name": "Top level menu", "AncestorsIds": [10]},
                    {"Id": 13, "Name": "Top level menu", "AncestorsIds": [10, 11, 13]}
                ]
        }
    ]
    

    (菜单项出现在 祖先

    Menu Count
    10   2
    11   2
    12   1
    13   1
    
    0 回复  |  直到 6 年前