我目前正在尝试将基于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)或(信息中包含foo AND bar)的所有文档。在此之后,按条件state = 1过滤结果,并增强具有图像的文档。”
我一直在尝试将布尔查询与MUST一起使用,但是我无法将布尔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
}
}
}
]
}
}
}
如您所见,“信息”的必填条件缺失。
有没有人有办法解决吗?
非常感谢。
**更新**
我已经更新了我的Elasticsearch查询,并摆脱了该功能得分。我的基本问题仍然存在。