首页 > 解决方案 > 高级 kibana / elasticsearch devtools 查询

问题描述

我正在通过以下方式查询我的索引:

GET INDEX/_count?q=KEY:VALUE

我想获取值列表中的数据,所以我多次运行它:

GET INDEX/_count?q=KEY:VALUE0
GET INDEX/_count?q=KEY:VALUE1
GET INDEX/_count?q=KEY:VALUE2

另外,我想检查密钥是否存在。这些选项在“发现”窗口中可用,但在这里我不知道如何访问它们...

我最终想要的是:查询特定索引 [I] 并计数(如果可能,获取高级统计信息,例如搜索的总文档的大小)所有具有特定键 [K] 的文档,或者具有超出列表中的值值(如果可能的话,使用正则表达式)。除此之外,我希望搜索/计数在特定日期之间。我知道如何在“发现”窗口中执行此操作,但发现有 2 个问题:

  1. 给出实际的文档(太重了,我只想要大小和数量)
  2. 涉及图形用户界面

总而言之,我有几个困难:

  1. 如何将大小添加到 DevTools 的计数中
  2. 如何计算/搜索最多过去一个月
  3. 如何查找密钥是否存在(例如 GET I/_count?K:exists?)
  4. 如何查找值是否是允许值列表之一(例如 GET I/_count?K=x || K=y || K2=z
  5. 如何在正则表达式中描述值(例如GET I/_count?K=abc*
  6. 计数/搜索完成后,如何删除所述文档(只需将 GET 替换为 DELETE?)

标签: elasticsearch

解决方案


这应该让你开始:

GET INDEX/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "dateField": {
              "gte": "now-1M"
            }
          }
        },
        {
          "bool": {
            "filter": {
              "exists": {
                "field": "K"
              }
            }
          }
        },
        {
          "query_string": {
            "query": "K:(x OR y) OR K2:z"
          }
        },
        {
          "regexp": {
            "K": "abc*"
          }
        }
      ]
    }
  }
}

或者,您可以切换mustshould,从而匹配其中任何一个子查询。

在此之后,替换_search_delete_by_query你就可以开始了。


推荐阅读