Сортировка Elasticsearch только по алфавиту, а не по номеру

У меня проблемы с сортировкой в ​​PHP, вот мое отображение:

{
"jdbc": {
"mappings": {
"jdbc": {
"properties": {
"admitted_date": {
"type": "date",
"format": "dateOptionalTime"},
"et_tax": {
"type": "string"},
"jt_tax": {
"type": "string"},
"loc_cityname": {
"type": "string"},
"location_countryname": {
"type": "string"},
"location_primary": {
"type": "string"},
"pd_firstName": {
"type": "string"}
}
}
}
}
}

Когда я использую упорядочить результат по сортировке, он упорядочит результаты по буквенно-цифровым, сначала загрузит результаты с числовыми. Мне нужно заказать результаты только начальные буквы алфавитов. Теперь он заказывает так:

http://localhost:9200/jdbc/_search?pretty=true&sort=pd_lawFirmName:asc

  1. BM&
  2. Гомес-Acebo & Помбо
  3. Аддлшоу Годдард

Как заказать результаты, как это?

  1. Аддлшоу Годдард
  2. BM&
  3. Гомес-Acebo & Помбо

Вот мой запрос, который я использую для индексации

{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/dbname",
"user" : "user",
"password" : "pass",
"sql" : "SQL QUERY",
"poll" : "24h",
"strategy" : "simple",
"scale" : 0,
"autocommit" : true,
"bulk_size" : 5000,
"max_bulk_requests" : 30,
"bulk_flush_interval" : "5s",
"fetchsize" : 100,
"max_rows" : 149669,
"max_retries" : 3,
"max_retries_wait" : "10s",
"locale" : "in",
"digesting" : true,
"mappings": {
"sorting": {
"properties": {
"pd_lawFirmName": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"}
}
}
}
}
}
}
}

1

Решение

Это так, потому что Elasticsearch будет токенизировать текст, используя анализатор по умолчанию, который standard, Например, McDermott Will Amery индексируется как:

              "amery",
"mcdermott",
"will"

Если вы хотите сортировать так, я бы предложил изменить отображение вашего pd_lawFirmName примерно так:

  "pd_lawFirmName": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"}
}
}

и сортировать по raw подпол:

http://localhost:9200/jdbc/_search?pretty=true&sort=pd_lawFirmName.raw:asc
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]