Сортировка по полю, которое в текстовом типе данных, но целое число будет храниться в Elasti c Поиск - PullRequest
0 голосов
/ 29 января 2020

у нас есть поле в индексе - TempNo, которое должно быть текстового типа, но все значения в этом поле являются числом (целым числом)

Когда я делаю сортировку (des c) в этом поле, сортировка не бывает правильно. Я не получаю результат в порядке c TempNo.

Кажется, это из-за типа текста. Как я могу отсортировать это правильно? (тип - текст, но сортировка должна выполняться по номеру)

Спасибо, Гопал

1 Ответ

0 голосов
/ 29 января 2020

На самом деле, если тип является текстовым, ElasticSearch не выполняет для вас никаких операций сортировки / объединения.

Есть 2 способа внести некоторые изменения.

1. Change the TempNo from text to integer directly. (It will sort correctly)

2. Add Raw type for TempNo if you must use the text,(https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html), and then use the painless for sorting by number.

GET my_index/_search
{
  "query": {
    "match_all": {}
  },
  "sort": {
    "_script": {
      "type": "Number",
      "order": "desc",
      "script": {
        "lang": "painless",
        "source": """
        String s = doc['TempNo'].value;
          int tdvalue = Integer.parseInt(s);
          return tdvalue;
        """
      }
    }
  }
}

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