如何在dsl查询/ java高级rest客户查询中包括kql

问题描述 投票:0回答:1

例如,有没有一种方法可以将KQL(几乎是语法)包含到DSL bool查询中。我有一个聚合,其存储桶构成了一个数据集,该数据集被“展平”到一个表格视图中。在用户界面内,我们允许进行KQL过滤,但是在执行给定操作后,我将获得包含在一行中的数据集,以用作布尔查询WHERE子句,例如用于获取我们包含在该集合中的文档实例的值。

所以我构造了一个布尔查询,该查询很棒,并且可以从这些属性中正常工作:

{
    "query": {
       "bool": {
          "must": [{
             "match": {
                 "color": "red"
              },{
                  "shape": "circle"
              }
          }]
       }
    }
}

但是我也得到了用户用来过滤用户界面内数据集的KQL字符串item.available:true

是否有办法将其包含在我已经通过java高级rest客户端构建的布尔查询中,或者只是这个目的的通用dsl?

我尝试过查询字符串,因为它似乎是我可以找到的最接近的文档

{
    "query": {
       "bool": {
          "must": [{
             "match": {
                 "color": "red"
              },{
                  "shape": "circle"
              }
          }]
       },
       "query_string" : {
             "query" : "item.available: true"
        }
    }
}

但是这似乎无法与bool查询同时使用?有任何想法吗?一如既往的感谢

java elasticsearch dsl elasticsearch-dsl
1个回答
0
投票

KQL仅在Kibana UI中可用/公开。每当Kibana与Elasticsearch通信时,它都会使用Elasticsearch的查询DSL。一个值得注意的例外是Lucene表达式(或翻译为Lucene语法的KQL表达式),最终将在Elasticsearchquery-string-query中作为搜索字符串出现。

query-string查询是“标准” Elasticsearch查询,可以在可以使用任何其他查询(例如match查询)的任何地方使用。因此,是的,在使用语言客户端时,也应该可以在query-string查询中使用bool查询。

© www.soinside.com 2019 - 2024. All rights reserved.