java - 如何在 dsl 查询/java 高级别的客户端查询中包含 kql
问题描述
例如,有没有办法将 KQL(几乎是语法)包含到 DSL bool 查询中。我有一个聚合,其存储桶构成一个数据集,该数据集被“展平”为表格视图。在 UI 中,我们允许 KQL 过滤,但在给定操作后,我会获得包含在一行中的数据集,用作布尔查询 WHERE 子句,例如用于获取我们包含在该集合中的文档实例的值。
因此,我构建了一个很棒的 bool 查询,并且可以从这些属性中正常工作:
{
"query": {
"bool": {
"must": [{
"match": {
"color": "red"
},{
"shape": "circle"
}
}]
}
}
}
但我也得到了用户用来过滤 UI item.available: true 数据集的 KQL 字符串
有没有办法将它包含在我已经通过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。query-string
一个值得注意的例外是 Lucene 表达式(或翻译成 Lucene 语法的 KQL 表达式) ,正如您所观察到的,它将最终作为 Elasticsearch 查询中的搜索字符串。
-queryquery-string
是“标准”Elasticsearch-query,可以在任何其他查询(例如match
-query)可以使用的地方使用。所以是的,应该可以在query-string
-query 中使用bool
-query,在使用语言客户端时也是如此。
推荐阅读
- java - Why the stale connection check is not 100% reliable in apache httpclient connectionPool
- javascript - 对象解释数组的Javascript扩展符号和深拷贝
- php - error.log 文件中未定义的索引 cookie 错误。我该如何解决这个问题?
- ios - 如何从 UIView 创建特定大小的图像
- jbpm - Business Central 中的远程服务器不可用
- wordpress - WordPress。为用户和其他内容添加分类
- kubernetes - 如何设置 Harbor 的 ssl issuer
- javascript - 为什么 Angular router.navigate() 不导航?
- express - 在每个主要浏览器上通过 express.js 在 localhost 上设置 cookie 失败
- android - GoogleServices - 如何使用flavorDimensions 为每种风味组合设置不同的applicationId?