【发布时间】:2015-04-16 19:21:24
【问题描述】:
我目前正在尝试将基于 solr 的应用程序迁移到 elasticsearch。
我有这个 lucene 查询
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
据我了解,这是 MUST 子句与布尔 OR 的组合:
“获取所有包含 (foo AND bar in name) OR (foo AND bar in info) 的文档。然后按条件 state=1 过滤结果并提升具有图像的文档。”
我一直在尝试对 MUST 使用 bool 查询,但我未能将 boolean OR 放入 must 子句。这是我所拥有的:
GET /test/object/_search
{
"from": 0,
"size": 20,
"sort": {
"_score": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
},
{
"match": {
"name": "bar"
}
}
],
"must_not": [],
"should": [
{
"match": {
"has_image": {
"query": 1,
"boost": 100
}
}
}
]
}
}
}
如您所见,“信息”的 MUST 条件缺失。
有人有解决办法吗?
非常感谢。
** 更新 **
我已经更新了我的 elasticsearch 查询并摆脱了该功能得分。我的基本问题仍然存在。
【问题讨论】:
-
这里有一个很好的关于结合 ElasticSearch 查询的文档:elastic.co/guide/en/elasticsearch/guide/current/…
-
从 v7.10 开始,这是关于布尔查询的新文档:elastic.co/guide/en/elasticsearch/reference/current/… 我确实相信可以通过示例改进文档,以便更清楚地了解像这个 OR 问题这样的简单案例。 .
标签: elasticsearch