elasticsearch Kibana-如何导出搜索结果,elasticsearch,kibana,kibana-4,kibana-7,elasticsearch,Kibana,Kibana 4,Kibana 7" /> elasticsearch Kibana-如何导出搜索结果,elasticsearch,kibana,kibana-4,kibana-7,elasticsearch,Kibana,Kibana 4,Kibana 7" />

elasticsearch Kibana-如何导出搜索结果

elasticsearch Kibana-如何导出搜索结果,elasticsearch,kibana,kibana-4,kibana-7,elasticsearch,Kibana,Kibana 4,Kibana 7,我们最近将集中式日志记录从Splunk转移到了ELK解决方案,我们需要导出搜索结果——Kibana4.1中有没有这样做的方法?如果有,就不太明显了 谢谢 当然,您可以从Kibana的Discover(Kibana 4.x+)导出。 1.在发现页面上,单击此处的“向上箭头”: 现在,在页面底部,您将有两个选项来导出搜索结果 在logz.io(我工作的公司),我们将根据特定的搜索发布计划报告。只导出时间戳和当时的邮件计数,而不导出日志信息: 原始: 14412402000001214 14412

我们最近将集中式日志记录从Splunk转移到了ELK解决方案,我们需要导出搜索结果——Kibana4.1中有没有这样做的方法?如果有,就不太明显了


谢谢

当然,您可以从Kibana的Discover(Kibana 4.x+)导出。 1.在发现页面上,单击此处的“向上箭头”:

  • 现在,在页面底部,您将有两个选项来导出搜索结果

  • 在logz.io(我工作的公司),我们将根据特定的搜索发布计划报告。

    只导出时间戳和当时的邮件计数,而不导出日志信息:

    原始: 14412402000001214 1441251000000,1217 1441261800000,1342 1441272600000,1452 1441283400000,1396 1441294200000,1332 1441305000000,1332 1441315800000,1334 1441326600000,1337 1441337400000,1215 1441348200000,12523 14413590000061897

    格式: “2015年9月3日06:00:00.000”,“1214” “2015年9月3日09:00:00.000”,“1217” “2015年9月3日,12:00:00.000”,“1342” “2015年9月3日,15:00:00.000”,“1452” “2015年9月3日,18:00:00.000”,“1396” “2015年9月3日,21:00:00.000”,“1332” “2015年9月4日,00:00:00.000”,“1332” “2015年9月4日03:00:00.000”,“1334” “2015年9月4日06:00:00.000”,“1337” “2015年9月4日09:00:00.000”,“1215” “2015年9月4日,12:00:00.000”,“12523”
    “2015年9月4日,15:00:00.000”,“61897”

    如果您想导出日志(不仅仅是时间戳和计数),您有两个选项(tylerjl在网站上很好地回答了这个问题):

    如果您希望从Elasticsearch实际导出日志,您可以 可能希望将它们保存在某个位置,因此可以在浏览器中查看它们 可能不是查看数百或数千条日志的最佳方式。 这里有几个选项:

    • 在“发现”选项卡中,您可以单击底部附近的箭头选项卡以查看原始请求和响应。您可以单击“请求” 并将其作为查询,使用curl(或类似的东西)对 查询您想要的日志

    • 您可以使用logstash或转储索引的内容(使用可能的查询参数来获取 您需要的特定文档。)


    如果您在使用curl发出自己的请求时遇到困难,或者您不需要自动程序从Kibana提取日志,只需单击“响应”并获取所需内容

    在使用curl时遇到“xsrf令牌丢失”等问题后, 我发现这种方法更简单更简单

    正如其他人所说,单击底部附近的箭头选项卡后会出现请求按钮


    这是一篇非常古老的文章。但我认为仍然有人在寻找一个好的答案

    您可以轻松地从Kibana Discover导出搜索

    首先单击保存,然后单击共享

    单击CSV报告

    然后单击生成CSV


    过一会儿,您将获得右下角的下载选项。

    这适用于Kibana v 7.2.0-将查询结果导出到本地JSON文件。在这里,我假设您有Chrome,类似的方法可能适用于Firefox

  • Chrome-open开发者工具/网络
  • Kibana-执行您的查询
  • Chrome-右键单击网络呼叫并选择复制/复制为cURL
  • 命令行-执行
    [cURL from step 3]>查询结果.json
  • 编辑:使用
    jq
    向下钻取生成的JSON文件中的
    源节点:

    jq '.responses | .[]  | .hits  | .hits | .[]._source ' query_result.json
    

    @肖恩的回答是正确的,但缺乏细节

    这是一个快速而肮脏的脚本,它可以通过httpie从ElasticSearch抓取所有日志,通过jq解析并写出它们,并使用滚动光标迭代查询,以便捕获前500个以上的条目(与本页上的其他解决方案不同)

    这个脚本是用httpie(http
    命令)和fishshell实现的,但是可以很容易地适应bash和curl等更标准的工具

    根据@Sean的答案设置查询:

    在“发现”选项卡中,您可以单击底部附近的箭头选项卡 查看原始请求和响应。您可以单击“请求”并 使用它作为对ES的查询,使用curl(或类似的东西)来查询ES 为了你想要的日志

    set output logs.txt
    设置查询“”
    设置电子邮件地址http://your-es-server:port
    设置索引'filebeat-*'
    功能处理页面
    #您可以在这里对每页结果执行任何操作
    #但写入TSV文件并不是一个坏例子——请注意
    #这里的jq表达式提取一个kubernetes pod名称并
    #消息字段,但可以根据需要进行修改
    回声$argv|\
    jq-r'.hits.hits[]。_source |[.kubernetes.pod.name,.message]|@tsv'\
    >>$output
    结束
    函数字符串
    echo(echo$argv | string sub-l 10)“…”(echo$argv | string sub-s-10-l 10)
    结束
    设置响应(echo$query | http POST$es_url/$index/_search\?scroll=1m)
    设置滚动id(echo$response | jq-r._滚动id)
    设置点击次数(echo$response | jq-r'.hits.hits | length')
    设置点击率\u到目前为止$hits\u计数
    echo“获得了$hits\u count hits和scroll ID的初始响应”(汇总字符串$scroll\u ID)
    处理\u第页$response
    而测试“$hits_count”!="0"
    设置响应(回显“{”scroll\”:“1m\”,“scroll\u id\”:“$scroll\u id\”}”\124; http POST$es\u url/\u搜索/滚动)
    设置滚动id(echo$response | jq-r._滚动id)
    设置点击次数(echo$response | jq-r'.hits.hits | length')
    设置点击次数(数学$hits\u so\u far+点击次数计数)
    echo“获得了带有$hits\u count hits(到目前为止的点击次数:$hits\u so\u far)和滚动ID的响应”(汇总字符串$scroll\u ID)
    处理\u第页$response
    结束
    回音完毕!
    
    最终结果是所有与Kibana中的查询匹配的日志,在脚本顶部指定的输出文件中,按照
    set output logs.txt
    set query '<paste value from Discover tab here>'
    set es_url http://your-es-server:port
    set index 'filebeat-*'
    
    function process_page
      # You can do anything with each page of results here
      # but writing to a TSV file isn't a bad example -- note
      # the jq expression here extracts a kubernetes pod name and
      # the message field, but can be modified to suit
      echo $argv | \
        jq -r '.hits.hits[]._source | [.kubernetes.pod.name, .message] | @tsv' \
        >> $output
    end
    
    function summarize_string
      echo (echo $argv | string sub -l 10)"..."(echo $argv | string sub -s -10 -l 10)
    end
    
    set response (echo $query | http POST $es_url/$index/_search\?scroll=1m)
    set scroll_id (echo $response | jq -r ._scroll_id)
    set hits_count (echo $response | jq -r '.hits.hits | length')
    set hits_so_far $hits_count
    echo "Got initial response with $hits_count hits and scroll ID "(summarize_string $scroll_id)
    
    process_page $response
    
    while test "$hits_count" != "0"
      set response (echo "{ \"scroll\": \"1m\", \"scroll_id\": \"$scroll_id\" }" | http POST $es_url/_search/scroll)
      set scroll_id (echo $response | jq -r ._scroll_id)
      set hits_count (echo $response | jq -r '.hits.hits | length')
      set hits_so_far (math $hits_so_far + $hits_count)
      echo "Got response with $hits_count hits (hits so far: $hits_so_far) and scroll ID "(summarize_string $scroll_id)
    
      process_page $response
    end
    
    echo Done!