Elasticsearch Term Aggregations Естественный порядок - PullRequest
0 голосов
/ 27 августа 2018

Я создаю страницу категории продукта с Elasticsearch, используемым для агрегатов. Насколько я знаю, ES может выполнять только "_count", "_term" и путем субагрегирования для упорядочения результатов агрегации с помощью DSL.

Мое поле агрегации является строковым полем и не анализируется, но содержит такие документы, как "23 EU, 24 EU, 23 Toddler и т. Д.".

Вот мой фрагмент кода с использованием пакета эластичного компоновщика

     "aggs":{  
        "ProductFilters.Size":{  
           "terms":{  
              "field":"ProductFilters.Size",
              "size":52,
              "order":{  
                 "_term":"asc"
              }
           }
        },
        "ProductFilters.Size_count":{  
           "cardinality":{  
              "field":"ProductFilters.Size"
           }
        }
     }

однако этот код генерирует такой результат. Я хочу, чтобы результаты генерировались так, как хотелось бы человеку не 10 после 1, а 2.

  • 1 молодежь США (38)
  • 1 молодежь (3)
  • 10 Малыш (3)
  • 10 США Малыш (48)
  • 11 Малыш (3)
  • 2 молодежь США (37)

Возможна ли естественная сортировка по агрегатам с ElasticSearch?

1 Ответ

0 голосов
/ 28 августа 2018

Чтобы иметь правильную естественную сортировку, вам нужно дополнить числа нулями (при условии, что вы знаете максимальное значение). Например, предполагая, что максимальное значение равно 99, строка «1 Youth» должна стать «01 Youth».

Невозможно сделать это автоматически без сторонних плагинов. Быстрый поиск в Google по словам "asticsearch natural sort "приводит к этому плагину, но, похоже, не очень активно поддерживается.

...