弹性搜索版本:5.6
我已经在 ElasticSearch 中导入了 MySQL 数据,并根据需要向弹性搜索添加了映射。以下是该列的一种映射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 中编写相同的查询。我无法在 ElasticSearch中找到order by value
等价物。strings
在网上搜索,我明白,我应该使用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
我相信我要求太多了。请帮助或任何相关的文档链接将不胜感激。希望问题很清楚。如有必要,我会提供更多详细信息。