如何在kibana中对多字符串查询使用“通配符”?

时间:2018-10-11 09:19:08

标签: elasticsearch kibana elasticsearch-5 kibana-4 kibana-5

我正在尝试运行以下查询:

{“通配符:” {“ terminalId”:70}}和tranSactionResponseCode:1

上面的查询抛出并出错:无法解析查询。......

但是当我运行上述查询时:{“通配符:” {“ terminalId”:70}} 或仅运行AND条件时:tranSactionResponseCode:1 它运行成功。 请帮助我弄清楚如何在一个查询中同时使用这两个条件。

1 个答案:

答案 0 :(得分:0)

我假设您的terminalId的类型为text

您可以根据自己的需要尝试以下两个查询。首先,您只能使用bool查询。

GET mytestindex/_search
{
  "query": { 
    "bool": { 
      "must": [
        { "wildcard": { "terminalId":   "70*"        }}, 
        { "match": { "tranSactionResponseCode": "1" }}  
      ]
    }
  }
}

第二,据我了解,您似乎希望基于交易代码过滤文档。在这种情况下,以及为了获得更好的查询性能,您可以使用以下使用boolfilter的查询。请注意,这里我已将wildcard用作查询上下文。

GET mytestindex/_search
{
  "query": { 
    "bool": { 
      "must": [
        { "wildcard": { "terminalId":   "70*" }       
        } 
      ],
      "filter": [ 
        { "term":  { "tranSactionResponseCode": "2" }}
      ]
    }
  }
}

在执行两个查询时都要检查分数。第二个选项将不考虑tranSactionResponseCode来计算其score

希望有帮助!

相关问题