[英]Elasticsearch - range filter with multimatch?
我正在使用彈性搜索來過濾服裝:
def self.search(query)
__elasticsearch__.search(
{
query: {
function_score: {
query: {
multi_match: {
query: query,
fields: ['description^30','material^10']
},
},
field_value_factor: {
field: "purchased"
},
}
}
}
)
結束
問題是我似乎無法按購買次數來過濾它們,如下所示:
range: {
purchased: {
gte: 1000
}
}
無論我在哪里放置它,都會給我以下錯誤:
[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"[range] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":88}],"type":"parsing_exception","reason":"[range] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":88},"status":400}
如何正確編寫范圍過濾器/輸入代碼? 有什么地方我可以閱讀有關此內容的更多信息,以了解應如何安排哈希值?
您可以使用bool/filter
查詢來做到這一點:
def self.search(query)
__elasticsearch__.search(
{
query: {
function_score: {
query: {
bool: {
filter: [
{
multi_match: {
query: query,
fields: ['description^30','material^10']
}
},
{
range: {
purchased: { gte: 1000}
}
}
]
}
},
field_value_factor: {
field: "purchased"
}
}
}
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.