Алфавитная сортировка с использованием эластичного поиска

1

Я подсчитал, есть ли способ или настройка для выполнения алфавитного сортировки в поиске elastics. У меня есть поле, и я хочу выполнить сортировку в порядке убывания по нему. Эластичность выполняет его лексикографически. Что я получаю:

Company name
Customer name
company address

Что я хочу получить:

Company name
company address
Customer name

Я обнаружил, что могу создать собственный анализатор, но, может быть, может быть лучший вариант?

Теги:
sorting
elasticsearch
elastic-stack

2 ответа

1

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

{
  "settings": {
    "analysis": {
      "analyzer": {
        "keyword_lowercase": {
          "tokenizer": "keyword",
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "my_type": {
      "properties": {
        "text": { 
          "type": "text",
          "fields": {
            "raw": { 
              "type":     "text",
              "analyzer": "keyword_lowercase",
              "fielddata": true
            }
          }
        }
      }
    }
  }
}

запрос

{
  "sort": [
    {
      "text.raw": {
        "order": "asc"
      }
    }
  ]
}
-1

Огромное спасибо. Наконец я получил свое решение после такой большой борьбы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню