我对ElasticSearch比较陌生。我需要编写一个api,它返回与名称最相似的结果匹配。
示例:我想找一部手机的名字与'samsung s6'最相似,这是我的JSON查询:
{
"query": {
"match": {
"title": {
"query": 'samsung s6',
"operator": "and"
}
}
},
"track_scores": True
}
我得到了(我自己格式化):
6 - Samsung S6 Edge - 5.9510574
5 - Samsung S6 - 7.512151
其中第一个字段只是一个Id,第二个是ElasticSearch执行搜索的名称字段,第三个是得分。
我尝试按 _score 排序:
{
"query": {
"match": {
"title": {
"query": 'samsung s6',
"operator": "and"
}
}
},
"track_scores": True,
"sort": [
{
"_score": {
"order": "desc"
}
}
]
}
似乎工作正常。但当我尝试使用其他名称时,即:'iphone 6':
3 - Apple iPhone 6 - 5.569293
1 - Apple iPhone 6 Plus - 5.8405986
我如何才能获得与名称最相似的结果匹配?
更新:
这是映射:
"device_group": {
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "string",
}
}
}