Как сортировать поля с помощьюasticsearch 7 - PullRequest
0 голосов
/ 03 мая 2019

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

Запрос:

GET /products/_search
{
        "sort": [
            { "title.keyword":   { "order": "desc" }}
          ],
        "query": {
           ....
        },

}

Отображение

"mappings" : {
      "properties" : {
        ...
        "title" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        ...
      }
    }

Результаты

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 826,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "products",
        "_type" : "_doc",
        "_id" : "1457580605505",
        "_score" : null,
        "_source" : {
          "id" : 1457580605505,
          "title" : "Étui-portefeuille multifonction pour iPhone",  <-----
          "body_html" : "description here",

после поиска в Google Я не нашел правильного ответа для своего случая.возможно, потому что я использую ES7 и решение, не совместимое с ним. У меня есть несколько продуктов, начинающихся с Z ... спасибо

1 Ответ

1 голос
/ 03 мая 2019

É - после Z в сортировке символов.(É отличается от E).Если вы хотите отсортировать какую-либо строку в эластичном, вы должны применить нормализатор к вашему полю, чтобы добиться естественной сортировки.

Вам следует перейти на эту страницу документации: нормализатор

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

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