Elasticsearch - выберите группу данных с определенным количеством - PullRequest
0 голосов
/ 24 апреля 2019

Ниже приведен образец типа данных, которые у меня есть:

enter image description here

Как я могу достичь в Elasticsearch что-то вроде ниже с SQL-запросом. Мои результаты должны включать фактические данные, а не просто количество документов, которые соответствуют моему требованию:

SELECT firstName, secondName, Country, City, Street, postalCode, House, Phone, Fax, count(*) FROM my_bucket
WHERE Country = 'GBR'
GROUP BY firstName, secondName, Country, City, Street, postalCode, House, Phone, Fax
ORDER BY firstName, secondName, Country, City, Street, postalCode, House, Phone, Fax
HAVING count(*) > 1;

Вот что я пробовал:

{
    "size" : 0,
    "query": {
      "bool": {
        "must": [
          {
            "term": {
            "Country": {
              "value": "GBR"
              }
            }
          }
        ]
      }
    }, 
    "aggs" : {
        "grouped_firstName" : {
            "terms" : {
                "field" : "firstName",
                "size" : 100000
            },
            "aggs": {
              "grouped_secondName": {
                "terms": {
                  "field": "secondName",
                  "size": 100000
                },
                "aggs": {
                  "grouped_Country": {
                    "terms": {
                      "field": "Country",
                      "size": 100000
                    },
                    "aggs": {
                      "grouped_City": {
                        "terms": {
                          "field": "City",
                          "size": 100000
                        },
                        "aggs": {
                          "grouped_Street": {
                            "terms": {
                              "field": "Street",
                              "size": 100000
                            },
                            "aggs": {
                              "grouped_postalCode": {
                                "terms": {
                                  "field": "postalCode",
                                  "size": 100000
                                },
                                "aggs": {
                                  "grouped_House": {
                                    "terms": {
                                      "field": "House",
                                      "size": 100000
                                    },
                                    "aggs": {
                                      "grouped_Phone": {
                                        "terms": {
                                          "field": "Phone",
                                          "size": 100000
                                        },
                                        "aggs": {
                                          "grouped_Fax": {
                                            "terms": {
                                              "field": "Fax",
                                              "size": 100000
                                            }
                                          },
                                            "poi_mds_filter": {
                                              "bucket_selector": {
                                                "buckets_path": {
                                                  "count_over_one": "grouped_Fax"
                                                },
                                                "script": "params.count_over_one > 1"
                                              }                                           
                                            }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
        }
    }
}

Результаты моей попытки дают мне только счет: "doc_count": 26772 Но мне нужен полный список данных (кроме столбца идентификатора), количество групп которых превышает 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...