【问题标题】:How to express optional matching using Query String Query如何使用查询字符串查询表示可选匹配
【发布时间】:2018-11-06 12:24:00
【问题描述】:
我有一个使用query string dsl 的查询,我希望它返回匹配所有三个断言的结果。 (状态 = 活动,价格 = 100,语言 = 英文)。
如何使language 参数成为可选参数,如果不匹配而不是根本不匹配,则得分较低?
(status:"active") AND (price:100) AND (language:"en")
【问题讨论】:
标签:
elasticsearch
elasticsearch-query
【解决方案1】:
你可以试试这个
(status:active AND language:en) OR (price:100 AND language:en)
或者像这样的较短版本:
+status:active +price:100 language:en
使用bool 和match 查询重写的等效查询是这个:
{
"bool": {
"must": [
{
"match": {
"status": "active"
}
},
{
"match": {
"price": 100
}
}
],
"should": {
"match": {
"language": "en"
}
}
}
}