【发布时间】:2019-06-07 17:18:29
【问题描述】:
我正在努力编写具有多个 AND/OR 条件的弹性搜索查询。
基本上是这样的逻辑:
cond1 && (cond2 || cond3 || cond4)
正如docs 中提到的,如果文档仅满足 must 子句,则该文档被视为匹配。在这种情况下,should 子句起到了助推作用,即如果一个文档除了 must 子句之外还匹配一个或多个 should 子句,那么它将具有更高的相关性分数,假设 cond2、cond3 和 cond4 是计算 a相关性得分。
问题是我只想要至少也匹配 OR 条件之一的文档。
请注意,我正在运行 ES6.3。我也试过Multiword queries,但这些结果也是错误的。
添加boost 似乎不会影响结果,我的结果只匹配第一个条件。
{
"query": {
"bool": {
"must": [
{
"term": {
"event.keyword": {
"value": "webhook.trigger"
}
}
}
],
"should": [
{
"match": {
"metaData.webhook.title": "My Example Title 1"
}
},
{
"match": {
"metaData.webhook.title": "Testing"
}
},
{
"match": {
"metaData.webhook.url": "myurl.com"
}
}
]
}
}
}
【问题讨论】:
标签: elasticsearch