Как я могу увеличить количество сегментов, возвращаемых через Candy для поискового запроса, из Elastic? - PullRequest
0 голосов
/ 14 мая 2019

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

CandyClient::Products()->Search($payload);

Похоже, что отображается максимум 10 ведер. Как я могу увеличить количество возвратов здесь? Вместо этого мне нужно вернуть все сегменты, чтобы я мог обновить количество агрегации во внешнем интерфейсе.

Е.Г.

meta: {sort: [{popularity: "desc"}], category_page: false,…}
    aggregation: {features: {doc_count: 899, features: {doc_count_error_upper_bound: 5, sum_other_doc_count: 587,…}},…}
        brand: {doc_count: 899, brand: {doc_count_error_upper_bound: 11, sum_other_doc_count: 538,…}}
            brand: {doc_count_error_upper_bound: 11, sum_other_doc_count: 538,…}
                buckets: [{key: "Melissa & Doug", doc_count: 55}, {key: "Papo", doc_count: 50},…]
                    0: {key: "Melissa & Doug", doc_count: 55}
                    1: {key: "Papo", doc_count: 50}
                    2: {key: "Le Toy Van", doc_count: 42}
                    3: {key: "Marvel", doc_count: 40}
                    4: {key: "Disney Princess", doc_count: 39}
                    5: {key: "A.B. Gee", doc_count: 29}
                    6: {key: "Sunnylife", doc_count: 29}
                    7: {key: "Fisher Price", doc_count: 28}
                    8: {key: "Toy Story", doc_count: 26}
                    9: {key: "Grimm's", doc_count: 23}
                    doc_count_error_upper_bound: 11
                    sum_other_doc_count: 538
                doc_count: 899
        ...

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Не уверен насчет GetCandy, но мне нравится думать, что счетчик агрегации - это то, что эластичный поиск может рассчитать и вернуть вам.

По сути, я пришел к следующему ES-запросу, где я использовал Cardinality Aggregation для того поля, к которому вы применяете Terms Aggregation.

Это вернет общее количество уникальных значений этого поля.

POST <your_index_name>/_search
{
  "query": {
    .....
  },
  "size": 200,
  "aggs": {
    "terms_myagg": {
      "terms": {
        "field": "<your_field_name>", 
        "size": 200                       <---- To return more buckets
      }
    },
    "count_myagg": {
      "cardinality": {                    <---- To return count of terms
        "field": "<your_field_name>"
      }
    }
  }
}

Также обратите внимание, что я упомянул здесь "size":200, чтобы получить большее количество сегментов в терминах агрегации.

Не совсем уверен, как это поможет, но я надеюсь, что это поможет !!

0 голосов
/ 15 мая 2019

В настоящее время это невозможно, но мы ищем лучший способ добавить это как конфигурацию, не слишком специфично для Elastic.

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