Elasti c Поисковое агрегирование с запросом типа bool - PullRequest
2 голосов
/ 19 июня 2020

Это мой запрос elasti c bool. это отлично работает:

{
  "query": {
        "bool": {
            "filter": [
                {
                    "terms": {
                        "parent_uuid._raw": [
                            "87ec596a-109e-45ce-8a8d-7a2d1a56df81",
                            "07526608-8140-46be-96b9-c5f7cca4bd93"
                        ]
                    }
                },
                {
                    "terms": {
                        "resource_type._raw": [
                            "Zone"
                        ]
                    }
                }
            ]
        }
    },
    "from": 0
}

Мне нужна агрегация в поле имени. Итак, я добавляю это:

"aggs": {
    "group_by_name": {
        "terms": {
            "field": "display_name.keyword"
        }
    } }

Но результат тот же. Что мне не хватает?

В результате я получаю:

{"device-resource": [{"fq_name": ["default-domain", "muthu1500", «EP», «JUNOS / Zone = oam»], «uuid»: «161cf82d-16fd-4219-861d-d50de622f8eb», «uri»: «/ ems-central / device-resource / 161cf82d-16fd-4219-861d -d50de622f8eb "}, {" fq_name ": [" default-domain "," muthu1500 "," EP "," JUNOS / Zone = untrust "]," uuid ":" fe28fb7 c -c087-4473-aeef- e302022f47a4 "," uri ":" / ems-central / device-resource / fe28fb7 c -c087-4473-aeef-e302022f47a4 "}, {" fq_name ": [" default-domain "," muthu1500 "," MNONZT "," JUNOS / Zone = trust "]," uuid ":" 251a4a9e-acb4-49ed-9c29-499ddbceb532 "," uri ":" / ems-central / device-resource / 251a4a9e-acb4-49ed-9c29-499ddbceb532 "}, {" fq_name ": [" default-domain "," muthu1500 "," MNONZT "," JUNOS / Zone = untrust "]," uuid ":" a3417512-8953-4c1e-b68e-8390327d5213 "," uri ":" / ems-central / device-resource / a3417512-8953-4c1e-b68e-8390327d5213 "}, {" fq_name ": [" default-domain "," muthu1500 "," SRX1500MD "," JUNOS / Zone = trust "]," уу id ":" 1a5434c5-d47d-40be-bb00-ef1d244e6c0 c "," uri ":" / ems-central / device-resource / 1a5434c5-d47d-40be-bb00-ef1d244e6c0 c "}]," всего ": 5}

Поскольку последние две записи имеют то же display_name, что и 2-я и 3-я записи соответственно, агрегат должен отображать только 1 из них. Мне нужен этот результат:

{"device-resource": [{"fq_name": ["default-domain", "muthu1500", "EP", "JUNOS / Zone = oam"] , "uuid": "161cf82d-16fd-4219-861d-d50de622f8eb", "uri": "/ ems-central / device-resource / 161cf82d-16fd-4219-861d-d50de622f8eb"}, {"fq_name": [" default-domain "," muthu1500 "," EP "," JUNOS / Zone = untrust "]," uuid ":" fe28fb7 c -c087-4473-aeef-e302022f47a4 "," uri ":" / ems-central / device-resource / fe28fb7 c -c087-4473-aeef-e302022f47a4 "}, {" fq_name ": [" default-domain "," muthu1500 "," MNONZT "," JUNOS / Zone = trust "]," uuid ":" 251a4a9e-acb4-49ed-9c29-499ddbceb532 "," uri ":" / ems-central / device-resource / 251a4a9e-acb4-49ed-9c29-499ddbceb532 "}]," total ": 3}

1 Ответ

1 голос
/ 19 июня 2020

Согласно вашему сопоставлению, ваша terms агрегация должна быть такой (используйте подполе _raw):

"aggs": {
  "group_by_name": {
    "terms": {
        "field": "display_name._raw"
    }
} }
...