我正在尝试根据用户搜索的内容添加自动完成功能。
目前,我有以下映射:
{
"courts_2": {
"mappings": {
"properties": {
"author": {
"type": "text",
"analyzer": "my_analyzer"
},
"bench": {
"type": "text",
"analyzer": "my_analyzer"
},
"citation": {
"type": "text"
},
"content": {
"type": "text",
"fields": {
"standard": {
"type": "text"
}
},
"analyzer": "my_analyzer"
},
"court": {
"type": "text"
},
"date": {
"type": "text"
},
"id_": {
"type": "text"
},
"title": {
"type": "text",
"fields": {
"standard": {
"type": "text"
}
},
"analyzer": "my_analyzer"
},
"verdict": {
"type": "text"
}
}
}
}
}
以下是我用于设置的代码:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_metaphone"
]
}
},
"filter": {
"my_metaphone": {
"type": "phonetic",
"encoder": "metaphone",
"replace": true
}
}
}
}
},
"mappings": {
"properties": {
"author": {
"type": "text",
"analyzer": "my_analyzer"
},
"bench": {
"type": "text",
"analyzer": "my_analyzer"
},
"citation": {
"type": "text"
},
"court": {
"type": "text"
},
"date": {
"type": "text"
},
"id_": {
"type": "text"
},
"verdict": {
"type": "text"
},
"title": {
"type": "text",
"analyzer": "my_analyzer",
"fields": {
"standard": {
"type": "text"
}
}
},
"content": {
"type": "text",
"analyzer": "my_analyzer",
"fields": {
"standard": {
"type": "text"
}
}
}
}
}
}
这是我想要实现的:我想收集并存储对端点所做的所有查询,并对其使用自动完成功能。例如,迄今为止,所有用户都进行了以下查询 -
Real Madrid v/s Barcelona
Real Madrid Team
Real Madrid Coach
Barcelona v/s Man City
Sevilla Home Ground
Man Utd. recent results
现在,如果有人搜索Rea
,则应建议以下自动完成查询:
Real Madrid v/s Barcelona
Real Madrid Team
Real Madrid Coach
这是基于迄今为止所有用户而不是单个用户所做的搜索。此外,我想分析一下在过去一个月中进行的最热门查询是什么。
我在 AWS Elasticsearch 服务上使用 ElasticSearch 7.1 版。
编辑:由于我的需求发生了一些变化,我已经大大偏离了最初的问题。如果这造成了任何麻烦,我深表歉意。