kibana - 2 过滤dsl查询看起来一样以及如何组合
问题描述
在 Kibana 中,我创建了 2 个过滤器: raw.browserJs.isWebDriver 为真,而 raw.browserJs.isWebDriver 不为真。为什么两者的编辑查询 DSL 相同:
{
"query": {
"match": {
"raw.browserJs.isWebDriver": {
"query": true,
"type": "phrase"
}
}
}
}
此外,我如何添加条件以便拥有一个大型 DSL 查询:
{
"query": {
"match": {
"appName": {
"query": "temp",
"type": "phrase"
}
}
}
}
解决方案
Kibana 中显示的查询 DSL 并不是发送到 elasticsearch 的实际查询。为选定时间段添加范围过滤器并反转过滤器。您可以在浏览器中发送的基础请求中看到实际查询。
您在 raw.browserJs.isWebDriver 不正确的地方进行过滤,最终结果如下:
{
"query": {
"bool": {
"must_not": [
{
"match_phrase": {
"raw.browserJs.isWebDriver": true
}
}
]
}
}
}
您可以在一个 DSL 查询中将多个条件与 bool 查询结合使用。(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html)
以下查询将适用于您的示例:
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"raw.browserJs.isWebDriver": true
}
},
{
"match_phrase": {
"appName": "temp"
}
}
]
}
}
}
推荐阅读
- visual-studio-2017 - VS2017 Team Explorer 的 SSDT 安装失败
- javascript - 无法在网格视图中显示帖子
- python - Python getch + 从单独的线程打印
- json - 如何使用 swift 4 解析 JSON
- python - 在类定义期间访问类对象
- excel - 更改事件不调用宏 Excel Vba
- java - RxJava:如何在多个线程中处理事件
- c - 为什么我得到 NULL is undefined 错误?
- javascript - localStorage 未提交数据
- laravel - Laravel 从控制器返回并继续路由