Я новичок в ElasticSearch и пытаюсь использовать его над данными, где человек может искать в некотором тексте (скажем, entity.name) и применять сортировку в списке результатов.
Ниже приведено мое отображение:
{
"entity": {
"dynamic_templates": [
{ "text_custom_field_template": {
"match": "ltd_text_*",
"mapping": {
"type": "text"
}
}}
],
"properties": {
"id": {
"type": "long",
"index": "not_analyzed"
},
"treeId": {
"type": "long",
"index": "not_analyzed"
}
"entity.name": {
"type": "text",
"fielddata": true,
"fields": {
"sort": {
"type": "keyword",
"ignore_above": 256
}
}
}
"entity.url": {
"type": "text"
},
"entity.details": {
"type": "text"
}
}
}
}
id name details is_marked
13 ABC entity details 1
14 BCD entity details 1
15 DEF entity details 1
16 EFG entity details 1
17 GHI details 1
18 Untitled entity details 1
Я хочу найти всю сущность с именем, имеющим сущность, а затем отсортировать результат по алфавиту.Если я бегу ниже по упругому поиску, я получаю одинаковые результаты для asc и desc:
{
"query":{
"multi_match":{
"query":"entity",
"fields":[
"entity.details^1.0",
"entity.name^4.0",
],
"type":"best_fields",
"operator":"AND",
"slop":0,
"prefix_length":0,
"max_expansions":50,
"lenient":false,
"zero_terms_query":"NONE",
"boost":1.0
}
},
"sort":{
"entity.name.sort" : "asc"
}
}
Result :
BCD
EFG
GHI
Untitled
ABC
Также есть способ поддержать то же самое (поиск и сортировка) для нового настраиваемого поля типа текста, которое может бытьдобавлено клиентом?