gpt4 book ai didi

elasticsearch - 在 Elasticsearch 5.6中如何对分析字段进行字母排序?

转载 作者:行者123 更新时间:2023-12-02 22:16:29 24 4
gpt4 key购买 nike

我在Elastic Search中面临字母排序问题。

我有一个Index:indexlive和一个具有以下映射的“用户”类型:

{
"liveindex": {
"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"
},
"user_Photo": {
"type": "text"
},
"user_UserID": {
"type": "keyword"
}
}
}
}
}
}

我的查询是这样的:
{
"index": "liveindex",
"type": "users",
"body": {
"from": 0,
"size": 50,
"query": {
"query_string": {
"fields": [
"user_Name"
],
"default_operator": "AND",
"query": "neel"
}
},
"sort": {
"_score": {
"order": "desc"
}
}
}
}

我在查询上方运行时得到以下结果:

尼尔·乔杜里

伊兹尼尔

尼尔莫迪

尼尔·亚格尼克

阿努尼尔

SWAPNA NEEL

我希望查询首先返回以“Neel”或“neel”作为第一个单词的名称。但是正如您所看到的ITZ NEEL,anu neel超出了所需的顺序。我也应用了按user_Name排序,但没有成功。
我知道 flex 搜索使用字典顺序而不是字母顺序。

有人可以帮我吗?

最佳答案

这不是字典顺序与字母顺序的问题。您应该为自己的keyword字段创建一个user_Name子字段,以便以后可以使用neel前缀增强文档:

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
  • swapna neel
  • 关于elasticsearch - 在 Elasticsearch 5.6中如何对分析字段进行字母排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588144/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com