因为项目可能会用到es保存一些非结构化的数据,并从中检索数据。对es调研了一下
从官网:https://www.elastic.co/downloads下载,解压即安装。
进入解压目录,执行bin目录下elasticsearch命令即启动。启动后,可以在终端执行命令,校验是否启动成功
curl localhost:9200
{ "name" : "atntrTf", "cluster_name" : "elasticsearch", "cluster_uuid" : "tf9250XhQ6ee4h7YI11anA", "version" : { "number" : "5.5.1", "build_hash" : "19c13d0", "build_date" : "2017-07-18T20:44:24.823Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }
有类似以上输出,说明es启动成功。es是java开发的,需要安装java运行环境。jdk或者jre
es有索引、类型、文档这些概念。依次类似对应关系型数据库的 数据库、表、记录。其实就是一个逻辑空间
创建索引命令
curl -X PUT 'localhost:9200/weather'
es提供了restful接口,-X表示http方法。具体可以了解下curl命令参数
新增一个文档
$ curl -X PUT 'localhost:9200/accounts/person/1' -d ' { "user": "张三", "title": "工程师", "desc": "数据库管理" }'
accounts为索引,person为type类型,1文档id -d后面跟提交的数据,一般为json格式
当然还有其他增删改查等restful接口。
总结
1. es是在lucene上封装了一层
2. es类似一个分布式存储和检索系统
3. 数据通过分片存放到不同的分片上,每个分片可以有0到多个副本
4. ELK为es, lagstash类似flume一个agent收集日志信息, k为kibana一个web管理界面。这三个都安装过,没事可以玩一下
5. es提供了java客户端以及rest客户端,具体有什么区别待研究
6. es客户端有可以在集群中扮演node角色的,不存数据。也有通过客户端直接连集群机器的,不属于集群
7. 节点类型有三个,主节点,数据节点, 客户端节点
个人感觉 doc --> 分词(ik等分词插件) --> 倒排 --> 检索
参考:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
阮一峰的博客写的很赞
es感觉还是很强大,es权威指南还没翻译完,开始卖了可以买一本看下,感觉写的不错