【发布时间】:2025-12-31 21:20:03
【问题描述】:
我需要在弹性搜索中实现以下逻辑
(ticketype=1 AND customerid= id AND available >1) OR(tickettype = 2 AND available >1 )
我有以下疑问
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must": [
{
"range": {
"ticket_group.available": {
"gte": 1
}
}
},
{
"match": {
"ticket_group.customer_id": (q.customer_id) ? q.customer_id : ""
}
},
{
"match": {
"ticket_group.ticket_type": 1
}
}
]
}
}
,
{
"bool":{
"must":[
{
"range":{
"ticket_group.available":{
"gte":1
}
}
},
{
"match":{
"ticket_group.ticket_type":2
}
}
]
}
}
]
}
}
但似乎即使在使用了应该之后,它也考虑了 AND 中的所有条件。正确的查询应该是什么?
【问题讨论】:
-
“似乎”相当模糊。您能否展示一个您在结果中找到但不应该匹配的文档示例?
-
这种查询可以使用查询字符串语法。
标签: elasticsearch