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

如何在dsl查询/java高级rest客户端查询中包含kql,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,例如,有没有一种方法可以将KQL(接近语法)包含到DSL bool查询中。我有一个聚合,它的bucket组成了一个数据集,数据集被“展平”为一个表视图。在UI中,我们允许KQL过滤,但在一个给定的操作中,我得到了一行中包含的数据集,用作类似于布尔查询WHERE子句的值,以获取我们包含在该集合中的文档实例 因此,我构造了一个bool查询,它非常好,并且可以从这些属性中很好地工作: { "query": { "bool": { "must": [{

例如,有没有一种方法可以将KQL(接近语法)包含到DSL bool查询中。我有一个聚合,它的bucket组成了一个数据集,数据集被“展平”为一个表视图。在UI中,我们允许KQL过滤,但在一个给定的操作中,我得到了一行中包含的数据集,用作类似于布尔查询WHERE子句的值,以获取我们包含在该集合中的文档实例

因此,我构造了一个bool查询,它非常好,并且可以从这些属性中很好地工作:

{
    "query": {
       "bool": {
          "must": [{
             "match": {
                 "color": "red"
              },{
                  "shape": "circle"
              }
          }]
       }
    }
}
但是我也得到了用户用来在UI中过滤数据集的KQL字符串 item.available:true

我已经通过java高级rest客户机/或通用dsl构建了布尔查询,有没有办法将其包含在布尔查询中

我尝试了查询字符串,因为它似乎是我能找到的文档中最接近的字符串

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

但这似乎不能与bool查询并行工作?有什么想法吗?感谢您一如既往

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


查询字符串
-query是一种“标准”Elasticsearch查询,可用于任何其他查询(例如
匹配
-query)。因此,是的,在
bool
-查询中也可以使用
查询字符串
-查询,在使用语言客户端时也是如此。

这正是我在看到这个答案之前就使用过的,但它是正确的!谢谢