学习ELK的童鞋们肯定知道要在kibana上面进行查询时,至少要创建一个index pattern.我们可以直接在页面上面创建,当然也可以使用Elasticsearch提供的RESTful API直接写进去。

关于如何创建script field, 参考另外一篇博客http://blog.csdn.net/u014781370/article/details/49868029, 本文使用同样的例子。

首先,我们得知道我们创建好的index pattern在Elasticsearch里面如何存储的。

安装了kibana之后,我们就发现Elasticserach里面有一个.kibana的index, 其中type等于index-pattern, id就是index pattern的名字。看例子:

# curl -XGET 'http://localhost:9200/.kibana/index-pattern/test-index?pretty'
{
  "_index" : ".kibana",
  "_type" : "index-pattern",
  "_id" : "test-index",
  "_version" : 4,
  "found" : true,
  "_source":{"title":"test-index","timeFieldName":"@timestamp","fields":"[{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"age\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"real_age\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc['age'].value + 1\",\"lang\":\"expression\",\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]"}
}

当我们在一些其他的solution里面,可以直接把这个index pattern写进去,就不用手动在kibana页面上面创建了,使用上面的的数据:

# curl -XPUT http://localhost:9200/.kibana/index-pattern/test-index?pretty -d '{"title":"test-index","timeFieldName":"@timestamp","fields":"[{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"age\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"realage\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc['age'].value + 1\",\"lang\":\"expression\",\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]"}'

去检查一下Kibana的页面,index pattern已经被创建。

但是,问题来了,写进去的scirpt field的运算公式变了,在写进去的时候单引号被弄丢了,这会导致什么问题呢?

Discover页面会提示出错,而且结果一直刷新不出来。下次如果遇到这种错误可以先去检查一下scripted field.

本文的重点,如何解决RESTful API 丢失单引号的情况呢,我试了各种转码方法,什么加"\", "\\"之类的都不管用。最后使用单引号的unicode替换,将单引号替换为“\u0027”, 结果成功了。(见红色字体处)

如下:

curl -XPUT http://localhost:9200/.kibana/index-pattern/test-index?pretty -d '{"title":"test-index","timeFieldName":"@timestamp","fields":"[{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"age\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"realage\",\"type\":\"number\",\"count\":0,\"scripted\":true,\"script\":\"doc[\u0027age\u0027].value + 1\",\"lang\":\"expression\",\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]"}'

[ELK]使用脚本写入带scripted field的index pattern时发生的错误相关推荐

  1. ae渲染出现错误是什么问题_After Effects错误:写入文件.....时发生渲染错误.输出模块失败.文件可能已损坏。(-1610153464)...

    我来回答一下,你在电脑里安装了其他下载的aex文件格式的插件,你只要把你这些插件删除掉,问题就可以解决,(安装插件不正确,或者有相同的插件也出现提示框)其实,这个提示不重要,你正常开启AE以后,正常使 ...

  2. 使用Spyder控制台(console)执行带参数脚本和带参数的debug模式

    使用Spyder控制台(console)执行带参数脚本和带参数的debug模式 很多python脚本运行时要加入参数,在spyder的控制台中运行会更加方便. 比如,运行某个脚本: run visua ...

  3. photoshop将图层导出到文件脚本不带数字序号、下划线方法

    photoshop将图层导出到文件脚本不带数字序号.下划线方法 这段时间一直在ps中批量处理图片,有时需要将每个图层里的图片分别导出到jpg或其它格式的图片,如果用ps自带的"将图层导出到文 ...

  4. [Kibana]Scripted Field的用法

    举个例子: 假设Elasticsearch中有一条这样的数据: {                  "_index" : "test-index",     ...

  5. 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程

    用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程 针对新人学C过程中可能遇到的一类问题 我们在学习中经常遇到这种情况: #include<stdio.h> void m ...

  6. python任务计划 0x1_从任务调度器执行python脚本时出现0x1错误(Windows 10)

    我正在尝试从windows task scheduler运行脚本(script1.py).这个脚本应该控制Chrome webdriver,我相信这可能是问题的根源.在Result is 0x1. 在 ...

  7. 如何解决Office2016安装时提示:错误1406。安装程序无法将值写入注册表项\.xlsx

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 一.当前问题 二.解决办法 一.当前问题 Office2016安装时提示:错误1406.安装程序无法将值写入注册表 ...

  8. 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突

    问题解决--使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突 参考文章: (1)问题解决--使用Cri ...

  9. 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。

    0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突. 参考文章: (1)0x0F19 ...

最新文章

  1. 十二张图详解Redis的数据结构和对象系统
  2. navicat for mysql 导入psc文件
  3. OpenGL 3D 选择
  4. 【学习笔记】 IPv4地址、NAT与子网掩码、子网划分
  5. Bootstrap让内容块居中
  6. C#中使用MongoDb
  7. 用python写生日快乐说说_生日快乐的说说(精选50句)
  8. win7共享xp打印机_解决共享打印机不能使用的问题
  9. python爬取12306火车票信息_从零开始写Python爬虫 --- 爬虫应用: 12306火车票信息查询...
  10. 用Vue做一个职业选择或地区选择的三级嵌套组件
  11. APISpace 号码实时查询API接口 免费好用
  12. 【APS】90张专业PPT学习高级计划与排程(APS)
  13. 零基础入门编程神器!苹果的免费编程应用出了Mac版了
  14. 天平游码读数例题_天平游码怎么读数?
  15. 如何在vmlogin中设置易路代理yiluproxy?
  16. Android第三方视频加载框架JCVideoPlayer
  17. LeetCode 718 最长重复子数组
  18. vi ~/.bashrc如何保存退出
  19. css零到一中级教程025:CSS 特异性
  20. 大话设计模式读书笔记之状态模式

热门文章

  1. ☀️苏州程序大白一文教你学会微信小程序开发☀️《❤️记得收藏❤️》
  2. perror mysql_MySQL   perror的使用方法
  3. 统一拦截--过滤器Filter
  4. 挑战52天背完小猪佩奇(第03天)
  5. 怎么重置imac_Mac什么时候需要重置SMC Mac重置SMC方法【】
  6. 怎么重置imac_[Mac硬件]如何重置 Mac 的 SMC
  7. java 新浪股票接口api,新浪微博API开放平台进行程序开发第一步(java)
  8. 十几年老Java咳血推荐:MySQL索引原理、失效情况,两万字肝爆,建议收藏!
  9. konachan网站之用户脚本优化Konachan站点浏览体验
  10. macs14_苹果为什么要转向ARM,并且仍将支持Intel Macs?