Elasticsearch是一个分布式的文档(document)存储引擎。它可以实时存储并检索复杂数据结构——序列化的JSON文档。换言说,一旦文档被存储在Elasticsearch中,它就可以在集群的任一节点上被检索。
一个文档不只有数据。它还包含了元数据(metadata)——关于文档的信息。三个必须的元数据节点是:
节点 | 说明 |
_index | 文档存储的地方 |
_type | 文档代表的对象的类 |
_id | 文档的唯一标识 |
在地址栏输入es服务器的ip地址和端口点connect就可以连接到集群。下面是连接后的视图。这是主界面,在这里可以看到es集群的基本信息(如:节点情况,索引情况)。
界面的右边有些按钮,如:node stats, cluster nodes,这些是直接请求es的相关状态的api,返回结果为json,如下图:
在索引下面有info和action两个按钮。info是可以查看索引的状态和mapping的定义。action是对索引进行操作,如:添加别名、刷新、关闭索引,删除索引等。
browser浏览界面,这个界面可以同时查看多个索引的数据,也可以查询指定字段的数据。
Structured Query查询界面,这个界面可以对某个索引进行一些复杂查询,如下面这个例子是查询product索引,构造boolquery,title字段里查询“产品”关键词,price范围为10到100的记录。
Any Request任意请求界面,这个界面可以说是个rest的客户端,可以通过它来对es进行一些请求操作或测试api接口,下面这个例子是把product索引的副本数设置为1,更多的api可以到es官网查询。
实战:
1. 先打开head插件http://localhost:9200/_plugin/head/
建立一个mapping,代码如下(别忘了开头http://localhost:9200/elevator,血的教训呀!!!)
注:不要想着先建索引再建mapping,因为这样的话logstash会写不进去!!
{
"mapping": {
"elevator": {
"properties": {
"message": {
"properties": {
"province": {
"type":"string"
},
"area": {
"type":"string"
},
"community": {
"type":"string"
},
"community_address": {
"type": "string"
},
"No": {
"type":"integer"
},
"unit": {
"type":"string"
},
"brand": {
"type":"string"
},
"batch": {
"type": "string"
},
"model number": {
"type":"string"
},
"time": {
"type":"string"
},
"floor": {
"type":"string"
},
"weight": {
"type":"string"
},
"speed": {
"type":"string"
},
"people": {
"type":"string"
}
}
},
"@version": {
"type": "string"
},
"@timestamp": {
"type": "string"
},
"host": {
"type": "string"
}
}
}
}
}
2. 建好之后使用我编写好的conf来配置logstash
说明:基于http的输入,端口号要与你的前端端口号一致(书上写的基于tcp的在这不适合)还有不用去下载所谓的插件,自己往里边写就可以
说明:kv是提取字段的(grok的方法试了很多没找到可以实现的,也不是网上的代码不对,应该是版本变了以后有些语法不一样了,grok应该是能实现的,大家有兴趣可以自己试试)mutate的代码是移除字段,utldecode是解码(在这也试了好久,没有最新版本指导都靠试呀。。。。)
说明:输出到es中
3. 准备工作都做完了,现在cmd让logstash的通道打开(具体的打开步骤上次发的文档http报文传输到log和es中有),然后将前端放入浏览器发送数据,此时的logstash会显示
然后head插件中会显示
大功告成!!