这不是字典顺序与字母顺序的问题。你应该创建一个keyword
您的子字段user_Name
字段,以便您稍后可以使用neel
prefix:
PUT liveindex
{
"settings": { <-- add these settings
"analysis": {
"normalizer": {
"lowercase": {
"type": "custom",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"users": {
"properties": {
"user_Confirmed": {
"type": "boolean"
},
"user_DateOfBirth": {
"type": "text"
},
"user_Email": {
"type": "text",
"analyzer": "standard"
},
"user_Gender": {
"type": "text"
},
"user_Name": {
"type": "text",
"analyzer": "standard",
"fields": { <-- add this sub-field
"sort": {
"type": "keyword",
"normalizer": "lowercase"
}
}
},
"user_Photo": {
"type": "text"
},
"user_UserID": {
"type": "keyword"
}
}
}
}
}
然后,为数据建立索引,最后使用以下查询,这将对具有user_Name
开头为的字段neel
:
POST liveindex/_search
{
"from": 0,
"size": 50,
"query": {
"bool": {
"must": {
"query_string": {
"fields": [
"user_Name"
],
"default_operator": "AND",
"query": "neel"
}
},
"should": {
"prefix": {
"user_Name.sort": "neel"
}
}
}
},
"sort": {
"_score": {
"order": "desc"
}
}
}
您将按以下顺序获得文档:
- 尼尔·亚格尼克
- 尼尔·莫迪
- 尼尔乔杜里
- ITZ NEEL
- anu neel
- 斯瓦纳尼尔