Elasticsearch: сортировка в алфавитном порядке, игнорируя числа и специальные символы - PullRequest
0 голосов
/ 20 декабря 2018

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

Что мне нужно, так это то, что алфавиты должны быть отсортированы и появляться первыми, за ними следуют цифры и специальные символы.Это возможно даже в ES 6.3 ?

Я пытался с помощью пользовательского анализатора заменить все неалфавитные символы, но он не работал:

{
  "analysis": {
    "analyzer": {
      "alphabets_analyzer": {
        "tokenizer": "standard",
        "type": "keyword",
        "char_filter": [
          "alphabets_char_filter"
        ]
      }
    },
    "char_filter": {
      "alphabets_char_filter": {
        "type": "pattern_replace",
        "pattern": "[^a-zA-Z\\s\\.]",
        "replacement": ""
      }
    }
  }
}

1 Ответ

0 голосов
/ 11 июля 2019

Мне удалось решить эту проблему с помощью следующих настроек на уровне индекса:

{
  "analysis": {
    "analyzer": {
      "alphabetsStringAnalyzer": {
        "tokenizer": "standard",
        "filter": "lowercase",
        "type": "custom",
        "char_filter": [
          "alphabets_char_filter"
        ]
      }
    },
    "char_filter": {
      "alphabets_char_filter": {
        "type": "pattern_replace",
        "pattern": "[^a-zA-Z]",
        "replacement": ""
      }
    }
  }
}

И настройки этого анализатора в отображении индекса, как показано ниже:

"fullName":{
            "type": "keyword",
            "fields": {
                 "raw": {
                     "type": "text",
                     "analyzer": "alphabetsStringAnalyzer",
                     "fielddata": true
                 }
             }
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...