我使用elasticsearch索引作为某种搜索API的缓存表。
{
"mappings": {
"dynamic": False,
"properties": {
"query_str": {"type": "text"},
"search_results": {
"type": "object",
"enabled": false
},
"query_embedding": {
"type": "dense_vector",
"dims": 768,
},
}
}
通过嵌入向量相似度进行该高速缓存搜索,如果新查询的嵌入向量与缓存查询的嵌入向量足够接近,则认为缓存命中,并向用户返回search_results字段。
我想清除缓存的搜索结果,因为它们在用户中不受欢迎(即缓存命中率低)。因此,我需要计算在特定时间段(例如上个月)内每个文档的缓存命中(即请求命中)数。
我知道,我可以显式地添加一个hit_rate
字段,并在每次新查询命中某个缓存查询时更新它,但是有没有更优雅的方法来做到这一点(也许通过一些内置的ElasticSearch统计)?
1条答案
按热度按时间drkbr07n1#
这是不可能的。实际上,App Search产品有一个分析功能,可以记录文档的点击量,并使用不同的索引来记录(也可以存储搜索查询)。