我试图在两个字段中搜索特定的字符串。对,我能得到想要的结果。现在我想用这样的方式对结果进行排序,如果在一个键中找到了值,则应该给予它更多的优先级。我试着按下面的方法做,但是出错了。
res = es.search(index="pdf_test", body={
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "72141",
}
}
]
}
},
"search_fields": {
"row_data": {
"weight": 10
},
"page_text": {
"weight": 1
}
}
})我得到了折叠错误
elasticsearch.exceptions.RequestError: RequestError(400,“解析_异常”,“search_fields中的START_OBJECT未知键”)。
我还尝试了如下所示的折叠查询:这里
res = es.search(index="pdf_test", body={
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "72141",
"search_fields": {
"row_data": {
"weight": 10
},
"page_text": {
"weight": 1
}
}
}
}
]
}
}
})elasticsearch.exceptions.RequestError: RequestError(400,'x_content_parse_exception',‘search_fields之后的multi_match未知令牌START_OBJECT’)
发布于 2021-06-15 13:46:18
您可以使用"^“和它们的名称对搜索结果进行排序。在你的情况下会是这样的。
res = es.search(index="pdf_test", body={
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "72141",
"fields": ["row_data^10", "page_text^1"]
}
}
]
}
}
})https://stackoverflow.com/questions/67987197
复制相似问题