我的弹性搜索索引如下所示。
title:The Godfather
year:1972
genres:Crime & Drama
title:Lawrence of Arabia
year:1962
genres:Adventure,Biography &Drama
title:To Kill a Mockingbird
year:1973
genres:Mystery
title:Apocalypse Now
year:1975
genres:Thriller
我正在尝试在elasticsearch中编写查询,如果它包含&如果它比在相同的字段上执行其他匹配操作。如果generes不包含&amp ;,它应该熟练其他匹配操作。基本上我正在寻找Elasticsearch中的条件。
下面是我的查询,但它似乎没有正常工作..
{
"query": {
"bool": {
"should": [
{
"regexp": {
"genres": ".*&.*"
}
},
{"match": {"genres": {"query": "Adventure"}}}
]
}
}
}
我在stackOverFlow上遵循以下建议。 How to write a conditional query with Elasticsearch?
答案 0 :(得分:1)
你可以嵌套bool查询,所以你可以做的只有一个顶级bool查询只有一个should子句,然后在那个should子句中,你还有两个bool查询。其中每个部分都包含must
部分,其中包含对&
和whatever else
的搜索。喜欢这个
bool:
should:
- bool:
must: [ _search for & and whatever else_ ]
- bool:
must: [ _search for another criteria_]
希望这有帮助!