elasticsearch Elasticsearch按术语值排序';秩序
我正在连接我的推荐服务和产品服务。无论参数是什么,推荐服务都会返回按相关性排序的产品ID列表。例如:
elasticsearch Elasticsearch按术语值排序';秩序,
elasticsearch,microservices,software-design,
elasticsearch,Microservices,Software Design,我正在连接我的推荐服务和产品服务。无论参数是什么,推荐服务都会返回按相关性排序的产品ID列表。例如: ["ID1", "ID2", "ID3"] 产品服务拥有存储产品详细信息的Elasticsearch索引。客户希望获得推荐产品的数据以及相关部门订购的产品详细信息。因此,我使用以下搜索查询: { "query":{ "bool":{ "filter":
["ID1", "ID2", "ID3"]
产品服务拥有存储产品详细信息的Elasticsearch索引。客户希望获得推荐产品的数据以及相关部门订购的产品详细信息。因此,我使用以下搜索查询:
{
"query":{
"bool":{
"filter":[
{
"terms": {
"product_id": ["ID1", "ID2", "ID3"]
}
}
]
}
}
}
问题是该查询的结果没有按术语值的顺序排序。我可以做出哪些改变来实现目标
附言:弹性搜索索引设计、服务响应格式或推荐系统的系统设计中的任何建议或参考都将受到欢迎。术语查询功能作为一个
或过滤器,以布尔方式对匹配项进行评分(true->1
,false->0
)
话虽如此,您可以通过query\u字符串
query生成类似的或
查询,从而增加它们的分数,从而将它们排序得更高:
{
“查询”:{
“布尔”:{
“应该”:[
{
“查询字符串”:{
“默认\u字段”:“产品\u id”,
“查询”:“ID1^3或ID2^2或ID3^1”
}
}
],
“过滤器”:[
{
“条款”:{
“产品id”:[“ID1”、“ID2”、“ID3”]
}
}
]
}
}
}
当然,可以动态更改上面的提升值,以考虑ID列表的不同长度。您希望结果排序的依据是什么?依据由推荐服务中的ML确定,可能基于类似的产品,甚至是一天中的某个时间。产品服务(ES索引)不应该知道排序依据。我还发现,为了避免查询字符串之外的过滤项,我可以应用min_分数:0.1