我正在尝试运行以下查询:
{“通配符:” {“ terminalId”:70}}和tranSactionResponseCode:1
上面的查询抛出并出错:无法解析查询。......
但是当我运行上述查询时:{“通配符:” {“ terminalId”:70}} 或仅运行AND条件时:tranSactionResponseCode:1 它运行成功。 请帮助我弄清楚如何在一个查询中同时使用这两个条件。
答案 0 :(得分:0)
我假设您的terminalId
的类型为text
。
您可以根据自己的需要尝试以下两个查询。首先,您只能使用bool
查询。
GET mytestindex/_search
{
"query": {
"bool": {
"must": [
{ "wildcard": { "terminalId": "70*" }},
{ "match": { "tranSactionResponseCode": "1" }}
]
}
}
}
第二,据我了解,您似乎希望基于交易代码过滤文档。在这种情况下,以及为了获得更好的查询性能,您可以使用以下使用bool
和filter
的查询。请注意,这里我已将wildcard
用作查询上下文。
GET mytestindex/_search
{
"query": {
"bool": {
"must": [
{ "wildcard": { "terminalId": "70*" }
}
],
"filter": [
{ "term": { "tranSactionResponseCode": "2" }}
]
}
}
}
在执行两个查询时都要检查分数。第二个选项将不考虑tranSactionResponseCode
来计算其score
。
希望有帮助!