我正在尝试运行以下查询:
{">通配符:"{"terminalId":70}} AND tranSactionResponseCode:1
上述查询抛出并出错:无法解析查询。
但是当我运行上述查询时:{"通配符:"{"terminalId":70}} 或者当我只运行 AND 条件时:传输操作响应代码:1 它成功运行。 请帮助我弄清楚如何在一个查询中使用这两个条件。
我假设您的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
。
希望对您有所帮助!