[关闭]
@SailorXiao 2016-08-26T00:20:19.000000Z 字数 1485 阅读 2102

Elasticsearch 学习笔记一 入门

elasticsearch


参考资料

官方学习文档:https://www.elastic.co/guide/index.html
入门中文权威指南: http://es.xiaoleilu.com/

1 认识es

elasticsearch功能:

- 全文检索(可以解决DB检索问题(文本检索性能,全文检索等))
- 分布式的实时文件存储,每个字段都被索引并可被搜索(牛逼)
- 分布式的实时分析搜索引擎(实时性能好)
- 可以扩展到上百台服务器,处理PB级结构化或非结构化数据(容易扩展,支持大数据量)

基于apache lucence,和solr比较:http://www.cnblogs.com/chowmin/articles/4629220.html,相比solr,有以下几点优点:

- elatisticsearch更加适用于实时搜索领域:实时建立索引时, Solr会产生io阻塞,查询性能较差
- 在数据量增长时,elatisticsearch的性能优于solr

两者比较:

- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
- Solr是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

2 启动与运行

安装教程间中文权威指南,安装完成后,有两个端口9200和9300:

- 9200: http Restful接口,用于展示集群数据以及使用http进行数据录入以及检索需求
- 9300: transport端口,用于与JAVA客户端通信以及集群间通信,使用es自身传输协议:Elasticsearch Transport Protocol

3 es初探

文档:

- es是面向文档,可以对文档进行索引、搜索、排序、过滤
- es使用json描述文档
- 文档基本等同于mysql/mongodb的一行

索引(indexing):

- es中存储数据的过程就叫索引
- Relational DB -> Databases        -> Tables -> Rows -> Columns
- Elasticsearch -> Indices(indexes) -> Types  -> Documents -> Fields
- es-->(n)indices-->(n)types-->(n)documents-->(n)fields
- es使用倒排索引(inverted index)的数据结构加速消息检索

创建索引/类型/文档:

- 不需要显示去创建索引和类型,只需和mongodb类似直接插入文档后会自动创建index和type
- 比如curl -X POST http://xxx:9200/sailor/user/1 -d 'xxx',就会自动创建index(sailor)和type(user)
- 通过HTTP的 POST/GET/PUT/DELETE操作可以对文档进行增删改查

检索:

- 使用_search可以检索符合条件的文档
- 使用_search?q=first_name:xiao简单进行查询
- 可以使用DSL语言进行搜索,使用filter
- es在进行搜索时会对文档进行相关性计分,基于相关性由高到低的顺序排列文档
- 聚合能支持各种类型聚合,如groupBy,取平均数等
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注