猿问

建立弹性搜索聚合器之间的关系 - 嵌套分组

我需要在字段之间创建嵌套分组。


让我们考虑下面给出的例子,


文件:


 {

     "keyword": "abc",

     "country": "IN",

     "state": "TN",

     "city": "Chennai"

   },

   {

     "keyword": "abc",

     "country": "IN",

     "state": "TN",

     "city": "Trichy"

   },

   {

     "keyword": "abc",

     "country": "IN",

     "state": "KL",

     "city": "TVM"

   },

   {

     "keyword": "abc",

     "country": "US",

     "state": "Cal",

     "city": "California"

   }

所需的输出(类似这样):


   {

     "country": "IN",

     "TN": [

       "Chennai",

       "Trichy"

     ],

     "KL": [

       "TVM"

     ]

   },

   {

     "country": "US",

     "Cal": [

       "California"

     ]

   }

使用的查询:


 {

     "from": 0,

     "size": 1,

     "aggs": {

         "country": {

             "terms": {

                 "field": "country.keyword",

                 "size": 50000

             }

         },

         "state": {

             "terms": {

                 "field": "state.keyword",

                 "size": 50000

             }

         },

         "city": {

             "terms": {

                 "field": "city.keyword",

                 "size": 50000

             }

         }

     },

     "query": {

         "query_string": {

             "query": "(keyword:abc) "

         }

     }

 }

对于这个查询,我得到了单独的存储桶作为 city 、 state 和 country 的输出。


但我需要的是城市应归入州,州应归入国家。


提前致谢。


蝴蝶刀刀
浏览 152回答 1
1回答

达令说

以下带有聚合的查询应该适合您{  "query": {    "query_string": {      "query": "(keyword:abc)"    }  },   "size": 0,   "aggs": {    "country_agg": {      "terms": {        "field": "country.keyword",        "size": 10      },      "aggs": {        "state_agg": {          "terms": {            "field": "state.keyword",            "size": 10          },          "aggs": {            "city_agg": {              "terms": {                "field": "city.keyword",                "size": 10              }            }          }        }      }    }  }}
随时随地看视频慕课网APP

相关分类

Python
我要回答