Агрегация по нескольким полям - эластичный поиск - PullRequest
0 голосов
/ 22 октября 2019

Как использовать множественную агрегацию вasticsearch. Мой код работает для одной агрегации, но я хочу добавить другую агрегацию. Я использую другие агги для этого, но его разбор исключение.

 { "aggs": {
                "_figures": {
                  "terms": {
                    "field": "id"
                  },
                  "aggs": {
                    "field1": {
                      "stats": {
                        "field": "field1"
                      },
                      "field2":{
                        "stats":{
                          "field":"field2"
                        }
                      }
                    }
                  }
                }

1 Ответ

1 голос
/ 24 октября 2019

Это работает для меня сейчас. Используя приведенный ниже код, я могу работать с несколькими агрегациями

 {"aggs": {
        "emp_figures": {
          "terms": {
            "field": "id"
          },
          "aggs": {
            "field1": {
              "stats": {
                "field": "field1"
              }
            },
            "field2":{
                "stats":{
                  "field":"field2"
                }
              },
            "field3":{
                "stats":{
                  "field":"field3"
                }
              }
          }
        }
      }
    }

А также это способ работать с несколькими агрегациями с Java

 SearchResponse getResponse = 
        client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TBL)
            .addAggregation( AggregationBuilders.terms( FIGURE)
                                    .field( "id" )
            .subAggregation( AggregationBuilders.stats( "stats" ).field( field1 ) )
            .subAggregation( AggregationBuilders.stats( "stats" ).field( field2) ).size( 100 ) )
                            .setQuery( query )
                            .setFrom( 0 )
                            .execute().actionGet();   
...