祝你们愉快,
我在Elastic/Kibana中遇到了一个小问题。在Kibana查询语言“KQL”中,我可以执行某个查询:
car:* AND coun: * AND doc: (bes* OR *rvr*) AND NOT coun: (SIP OR LUK)
我想使用Elasticscearch查询DSL将其用作过滤器查询。只是我没有得到相同的结果。为此,我使用布尔运算符。我的查询如下所示:
{
"query": {
"bool": {
"must": [
{
"exists": {
"field": "car"
}
},
{
"exists": {
"field": "coun"
}
}
],
"should": [
{
"wildcard": {
"doc.keyword": {
"value": "bes*"
}
}
},
{
"wildcard": {
"doc.keyword": {
"value": "*rvr*"
}
}
}
],
"must_not": [
{
"term": {
"coun.keyword": "SIP"
}
},
{
"term": {
"coun.keyword": "LUK"
}
}
],
"minimum_should_match": 1
}
}
}
不幸的是,我没有得到相同的结果。我猜是“应该”操作符。但我不知道如何调整代码。
我将非常感激任何答案!非常感谢!
1条答案
按热度按时间bnl4lu3b1#
这里的问题是,你把OR放在AND外面。只要把
should
子句移到must
里面。就像这样