问题描述
这是一个人为的例子,用以说明我的问题。我有一堆文件名,我想按字母顺序对它们进行排序,就像macOS在查找器窗口中所做的一样。
这些是我索引文件名的顺序,我希望它们能按顺序排列:
currentuser.email
这就是我在Kibana开发工具中所做的测试:
A Tribe Called Quest - Can I Kick It (1).mp3
a.png
Bcc 05.png
Birling Gap Cliffs.jpg
Durdle Door.jpg
f.png
Frost.jpg
p.png
Users order.mp4
z.png
我得到的结果是:
## sorting contrived example
# create the index with keyword filename for sorting
PUT /file-names
{
"settings": {
"number_of_shards": 1
},"mappings": {
"_doc" : {
"properties": {
"filename": { "type": "keyword" }
}
}
}
}
# create bunch of documents
POST file-names/_doc/_bulk
{ "index":{} }
{ "filename":"A Tribe Called Quest - Can I Kick It (1).mp3" }
{ "index":{} }
{ "filename":"a.png" }
{ "index":{} }
{ "filename":"Bcc 05.png" }
{ "index":{} }
{ "filename":"Birling Gap Cliffs.jpg" }
{ "index":{} }
{ "filename":"Durdle Door.jpg" }
{ "index":{} }
{ "filename":"Frost.jpg" }
{ "index":{} }
{ "filename":"f.png" }
{ "index":{} }
{ "filename":"Users order.mp4" }
{ "index":{} }
{ "filename":"p.png" }
{ "index":{} }
{ "filename":"z.png" }
# query with sort - bugged
GET /file-names/_search
{
"sort": {
"filename": {
"order": "asc"
}
}
}
哪些不是我期望的顺序。出于我无法理解的原因,您可以在“ Users order.mp4”下面看到“ a.png”。
任何帮助我们都可以按照我期望的顺序进行排序的人!
解决方法
正如@Alper所建议的那样,它已经是addressed。
如果您出于某些原因需要坚持使用keyword
映射,请按以下步骤进行script-sort:
GET /file-names/_search
{
"sort": {
"_script": {
"type": "string","script": {
"lang": "painless","source": "doc['filename'].value.toLowerCase()"
},"order": "desc"
}
}
}