当前位置: 首页 > 知识库问答 >
问题:

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

钮鸿煊
2023-03-14

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

因此,我构造了一个bool查询,它很棒,可以从以下属性中正常工作:

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

但我还获得了用户用于在UI项内的数据集中进行筛选的KQL字符串。available:true

是否有一种方法可以将它包含在我已经通过java高级rest客户机/或通用dsl构建的布尔查询中?

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

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

共有1个答案

穆商震
2023-03-14

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

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

 类似资料:
  • 这是我的Elasticsearch sql查询。我使用Kibana执行了这个查询,并得到了有效的输出。 明白吗?format=json{“query”:“从eps_stbl_日志中选择Count(appId),其中cast(timestamp AS DATE)=TODAY()和status='COMPLETED'” 这需要在restHighLevelClient java API中编写。你能帮助编

  • 快捷查询 快捷查询方式是一种多字段相同查询条件的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如: Db::table('think_user') ->where('name|title','like','thinkphp%') ->where('create_time&update_time','>',0

  • 需要实现sql查询,如: 如何使用QueryDSL编写这样的语句?(我没有使用任何JPA)。任何帮助/提示都非常感谢!

  • ORM 以 QuerySeter 来组织查询,每个返回 QuerySeter 的方法都会获得一个新的 QuerySeter 对象。 基本使用方法: o := orm.NewOrm() // 获取 QuerySeter 对象,user 为表名 qs := o.QueryTable("user") // 也可以直接使用对象作为表名 user := new(User) qs = o.QueryTab

  • 主要内容:匹配所有查询,全文查询,匹配查询,multi_match查询,查询字符串查询,期限等级查询,范围查询,复合查询,连接查询,地理查询在Elasticsearch中,通过使用基于JSON的查询进行搜索。 查询由两个子句组成 - 叶查询子句 - 这些子句是匹配,项或范围的,它们在特定字段中查找特定值。 复合查询子句 - 这些查询是叶查询子句和其他复合查询的组合,用于提取所需的信息。 Elasticsearch支持大量查询。 查询从查询关键字开始,然后以对象的形式在其中包含条件和过滤器。以下描

  • 问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)