[ELK]使用脚本写入带scripted field的index pattern时发生的错误
学习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时发生的错误相关推荐
- ae渲染出现错误是什么问题_After Effects错误:写入文件.....时发生渲染错误.输出模块失败.文件可能已损坏。(-1610153464)...
我来回答一下,你在电脑里安装了其他下载的aex文件格式的插件,你只要把你这些插件删除掉,问题就可以解决,(安装插件不正确,或者有相同的插件也出现提示框)其实,这个提示不重要,你正常开启AE以后,正常使 ...
- 使用Spyder控制台(console)执行带参数脚本和带参数的debug模式
使用Spyder控制台(console)执行带参数脚本和带参数的debug模式 很多python脚本运行时要加入参数,在spyder的控制台中运行会更加方便. 比如,运行某个脚本: run visua ...
- photoshop将图层导出到文件脚本不带数字序号、下划线方法
photoshop将图层导出到文件脚本不带数字序号.下划线方法 这段时间一直在ps中批量处理图片,有时需要将每个图层里的图片分别导出到jpg或其它格式的图片,如果用ps自带的"将图层导出到文 ...
- [Kibana]Scripted Field的用法
举个例子: 假设Elasticsearch中有一条这样的数据: { "_index" : "test-index", ...
- 用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程
用于调用的参数太少/写入位置时发生冲突/检测到无效的异常处理程序例程 针对新人学C过程中可能遇到的一类问题 我们在学习中经常遇到这种情况: #include<stdio.h> void m ...
- python任务计划 0x1_从任务调度器执行python脚本时出现0x1错误(Windows 10)
我正在尝试从windows task scheduler运行脚本(script1.py).这个脚本应该控制Chrome webdriver,我相信这可能是问题的根源.在Result is 0x1. 在 ...
- 如何解决Office2016安装时提示:错误1406。安装程序无法将值写入注册表项\.xlsx
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 一.当前问题 二.解决办法 一.当前问题 Office2016安装时提示:错误1406.安装程序无法将值写入注册表 ...
- 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突
问题解决--使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突 参考文章: (1)问题解决--使用Cri ...
- 0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。
0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突. 参考文章: (1)0x0F19 ...
最新文章
- 十二张图详解Redis的数据结构和对象系统
- navicat for mysql 导入psc文件
- OpenGL 3D 选择
- 【学习笔记】 IPv4地址、NAT与子网掩码、子网划分
- Bootstrap让内容块居中
- C#中使用MongoDb
- 用python写生日快乐说说_生日快乐的说说(精选50句)
- win7共享xp打印机_解决共享打印机不能使用的问题
- python爬取12306火车票信息_从零开始写Python爬虫 --- 爬虫应用: 12306火车票信息查询...
- 用Vue做一个职业选择或地区选择的三级嵌套组件
- APISpace 号码实时查询API接口 免费好用
- 【APS】90张专业PPT学习高级计划与排程(APS)
- 零基础入门编程神器!苹果的免费编程应用出了Mac版了
- 天平游码读数例题_天平游码怎么读数?
- 如何在vmlogin中设置易路代理yiluproxy?
- Android第三方视频加载框架JCVideoPlayer
- LeetCode 718 最长重复子数组
- vi ~/.bashrc如何保存退出
- css零到一中级教程025:CSS 特异性
- 大话设计模式读书笔记之状态模式
热门文章
- ☀️苏州程序大白一文教你学会微信小程序开发☀️《❤️记得收藏❤️》
- perror mysql_MySQL perror的使用方法
- 统一拦截--过滤器Filter
- 挑战52天背完小猪佩奇(第03天)
- 怎么重置imac_Mac什么时候需要重置SMC Mac重置SMC方法【】
- 怎么重置imac_[Mac硬件]如何重置 Mac 的 SMC
- java 新浪股票接口api,新浪微博API开放平台进行程序开发第一步(java)
- 十几年老Java咳血推荐:MySQL索引原理、失效情况,两万字肝爆,建议收藏!
- konachan网站之用户脚本优化Konachan站点浏览体验
- macs14_苹果为什么要转向ARM,并且仍将支持Intel Macs?