Версия ElasticSearch: 5.6
Я импортировал данные MySQL в ElasticSearch и при необходимости добавил сопоставление с эластичным поиском. Ниже приведено одно сопоставление для столбца application_status
.
Сопоставления:
{
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"lead": {
"properties": {
"application_status": {
"type": "string",
"analyzer": "case_insensitive",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}}
На приведенном выше сопоставлении я могу выполнить простую сортировку (asc
или desc
), используя следующий запрос:
{
"size": 50,
"from": 0,
"sort": [{
"application_status.keyword": {
"order": "asc"
}
}]}
который является MySql эквивалентом
select * from <table_name> order by application_status asc limit 50;
Нужна помощь по следующей проблеме: У меня есть запрос MySQL, который сортируется на основе application_status
:
select * from vLoan_application_grid order by CASE WHEN application_status = "IP_QUAL_REASSI" THEN application_status END desc, CASE WHEN application_status = "IP_COMPLE" THEN application_status END desc, CASE WHEN application_status LIKE "IP_FRESH%" THEN application_status END desc, CASE WHEN application_status LIKE "IP_%" THEN application_status END desc
Помогите, пожалуйста, написать такой же запрос в ElasticSearch. Я не могу найти эквивалент order by value
для strings
в ElasticSearch. Поискав в Интернете, я понял, что мне следует использовать sorting scripts
, но не смог найти подходящей документации.
У меня есть следующий запрос, который просто выполняет простую сортировку.
{
"size": 500,
"from": 0,
"query" : {
"match_all": {}
},
"sort": {
"_script": {
"type": "string",
"script": {
"source": "doc['application_status.keyword'].value",
"params": {
"factor": ["IP_QUAL_REASS", "IP_COMPLE"]
}
},
"order": "desc"
}
}}
В приведенном выше запросе я не использую раздел params
, так как не знаю, как его использовать для type: string
.
Я считаю, что прошу слишком много. Пожалуйста, помогите или любые соответствующие ссылки на документацию будут очень признательны. Надеюсь, вопрос ясен. При необходимости предоставлю более подробную информацию.
application_status
может иметь несколько значений. Мне нужно отсортировать приложение по его значению статуса. Предположим, что у 10 приложений естьapplication_status = 'IP_QUAL_REASS'
, а у 5 –application_status = 'IP_COMPLE'
, тогда приложения со статусомIP_QUAL_REASS
должны оказаться наверху, а приложения со вторым условием - ниже. - person Sagar Chilukuri   schedule 02.11.2017"sort": [{ "application_status.keyword": { "order": "asc" } }]}
делает именно это. - person Andrei Stefan   schedule 02.11.2017sort
иsort by value
.sort by value
значение сначала упорядочивает строки по значениям их полей. Пожалуйста, проверьте electrictoolbox.com/mysql-order-specific-field-values а>. - person Sagar Chilukuri   schedule 02.11.2017