如何在 dsl query/java 高级 rest 客户端查询中包含 kql
How to include kql in dsl query/java high level rest client query
例如,有没有办法将 KQL(几乎是语法)包含到 DSL 布尔查询中。我有一个聚合,它的桶组成了一个数据集,它是 "flattened" 到 table 视图。在 UI 中,我们允许 KQL 过滤,但根据给定的操作,我得到一行中包含的数据集,用作布尔查询 WHERE 子句之类的值,用于获取我们包含在该集合中的文档实例。
所以我构建了一个 bool 查询,它很棒并且可以从这些属性中正常工作:
{
"query": {
"bool": {
"must": [{
"match": {
"color": "red"
},{
"shape": "circle"
}
}]
}
}
}
但我也得到了用户用来过滤 UI 中的数据集的 KQL 字符串
item.available: 真
有没有一种方法可以将其包含在我已经通过 java 高级休息客户端/或只是通用 dsl 构建的布尔查询中?
我试过查询字符串,因为它似乎是我能找到的最接近的文档
{
"query": {
"bool": {
"must": [{
"match": {
"color": "red"
},{
"shape": "circle"
}
}]
},
"query_string" : {
"query" : "item.available: true"
}
}
}
但这似乎不能与 bool 查询并行工作?有任何想法吗?一如既往的感谢
KQL 在 Kibana UI 中只有 available/exposed。每当 Kibana 与 Elasticsearch 通信时,它都会使用 Elasticsearch 的查询 DSL。一个值得注意的例外是 Lucene 表达式(或翻译成 Lucene 语法的 KQL 表达式),正如您观察到的那样,它最终将作为 Elasticsearch query-string
-query 中的搜索字符串。
query-string
-query 是一个 "standard" Elasticsearch-query,可以在任何其他查询(例如 match
-query)可以使用的地方使用。所以是的,应该可以在 bool
查询中使用 query-string
查询,在使用语言客户端时也是如此。
例如,有没有办法将 KQL(几乎是语法)包含到 DSL 布尔查询中。我有一个聚合,它的桶组成了一个数据集,它是 "flattened" 到 table 视图。在 UI 中,我们允许 KQL 过滤,但根据给定的操作,我得到一行中包含的数据集,用作布尔查询 WHERE 子句之类的值,用于获取我们包含在该集合中的文档实例。
所以我构建了一个 bool 查询,它很棒并且可以从这些属性中正常工作:
{
"query": {
"bool": {
"must": [{
"match": {
"color": "red"
},{
"shape": "circle"
}
}]
}
}
}
但我也得到了用户用来过滤 UI 中的数据集的 KQL 字符串 item.available: 真
有没有一种方法可以将其包含在我已经通过 java 高级休息客户端/或只是通用 dsl 构建的布尔查询中?
我试过查询字符串,因为它似乎是我能找到的最接近的文档
{
"query": {
"bool": {
"must": [{
"match": {
"color": "red"
},{
"shape": "circle"
}
}]
},
"query_string" : {
"query" : "item.available: true"
}
}
}
但这似乎不能与 bool 查询并行工作?有任何想法吗?一如既往的感谢
KQL 在 Kibana UI 中只有 available/exposed。每当 Kibana 与 Elasticsearch 通信时,它都会使用 Elasticsearch 的查询 DSL。一个值得注意的例外是 Lucene 表达式(或翻译成 Lucene 语法的 KQL 表达式),正如您观察到的那样,它最终将作为 Elasticsearch query-string
-query 中的搜索字符串。
query-string
-query 是一个 "standard" Elasticsearch-query,可以在任何其他查询(例如 match
-query)可以使用的地方使用。所以是的,应该可以在 bool
查询中使用 query-string
查询,在使用语言客户端时也是如此。