elasticSearch介绍
1. 简介
elasticSearch是一款基于Apache Lucene构建的开源搜索引擎,采用java编写并使用Lucene构建索引、提供搜索功能,ElasticSearch的目标是让全文搜索变得简单,开发者可以通过他简单明了的RestFul API轻松的实现搜索功能,而不必去面对Lucene的复杂性。ES能够轻松的进行大规模的横向扩展,以支撑PB级的结构化和非结构化海量数据的处理。
一言蔽之:ElasticSearch是一款基于Lucene的实时分布式搜索和分析引擎。
elasticSearch设计主要用于云计算中,能够达到实时搜索、稳定、可靠、快速,安装使用也很方便。
国内官网:开源搜索:Elasticsearch、ELK Stack 和 Kibana 的开发者 | Elastic
2. 工作原理
3. 适用场景
3.1 使用场景概述
- 站内搜索:主要和Solr竞争,属于后起之秀
- NoSQL json文档数据库:主要抢占Mongo的市场,他在读写性能上优于Mongo,同时也支持地理位置查询,还方便地理位置和文本混合查询。
- 监控:统计、日志类事件序的数据存储和分析、可视化、这方面是引领者。
- 国外:Wikipedia(维基百科)使用ES提供全文搜索并高亮关键字、StackOverflow(IT问答网站)结合全文搜索与地理位置查询、GitHub使用ElasticSearch检索1300亿行的代码
- 国内:百度(在云分析、网盟、预测、文库、钱包、风控等业务上都应用了ES,单集群每天导入30TB+数据,总共每天60TB+)、新浪、阿里巴巴、腾讯等公司均有使用ES。
- 使用比较广泛的平台ELK(ElasticSearch、Logstash、Kibana)
3.2 使用场景详解
-
使用elasticSearch作为主要的后端 -
在现有系统中增加elasticSearch -
使用elasticSearch和现有的工具
- rsyslog、Logstash、Apache Flume日志记录工具
- 搜索和可视化界面分析工具:Kibana
4. 与MySQL对比
MySQL | ES |
---|
database数据库 | index索引库 | table表 | type类型 | row行,记录 | document文档 | column列 | filed字段 |
这里Types的概念已经逐渐弱化,在ES6.X中,一个index包含一个type,在ES7.X中,type的概念已经被删除了。
5. REST
5.1 REST简介
REST全称Representational State Transfer。是一种软件的架构风格,而不是标准,只是提供了一组设计原则换约束条件。它主要用户客户端和服务端交互类的软件。基于这个风格设计的软件可以更简洁、更有层次、更易于实现缓存等机制。
- REST操作:
- GET: 获取对象的当前状态
- PUT: 改变对象的状态
- POST: 创建对象
- DELETE: 删除对象
- HEAD: 获取头信息
5.2 示例
传统的请求:http://localhost/login?username=hjx&userpass=123
rest风格:http://localhost/login/hjx/123
5.3 ES内置REST的url
URL | 描述 |
---|
/index/search | 搜索指定索引下的数据 | /aliases | 获取或搜索索引的别名 | /index/ | 查看指定索引的详细信息 | /index/type/ | 创建或操作类型 | /index/_mapping | 创建或操作mapping | /index/_setting | 创建或操作设置(number_of_shards是不可更改的) | /index/_open | 打开指定被关闭的索引 | /index/_close | 关闭指定索引 | /index/_refresh | 刷新索引(使新加内容对索引可见,不保证数据被写入磁盘) | /index/flush | 刷新索引(会触发Lucene提交) |
6. ES的下载安装
7. ES基础操作
7.1 基础操作
-
创建名为shopping的索引
- PUT http://localhost:9200/shopping
-
获取索引信息
- GET http://localhost:9200/shopping
-
获取索引的索引
- GET http://localhost:9200/cat/indices?v
-
删除索引
- DELETE http://localhost:9200/shopping
-
插入文档数据
- POST http://localhost:9200/shopping/doc
- Body用JSON格式
- {
“titlt”:“小米手机”, “category”:“小米”, “images”:“http://www.gulixueyuan.com/xm.jpg”, “price”:3999.00 } - 自定义ID
- POST http://localhost:9200/shopping/doc/1001
-
根据主键数据
- GET http://localhost:9200/shopping/doc/1001
-
查询所有数据
- GET http://localhost:9200/shopping/_search
-
更新数据,全量覆盖
- PUT http://localhost:9200/shopping/doc
- Body用JSON格式
- {
“titlt”:“小米手机”, “category”:“小米”, “images”:“http://www.gulixueyuan.com/xm.jpg”, “price”:5999.00 } -
更新数据,局部更新
-
条件查询
-
分页查询
-
多条件查询
-
全文查询
-
完全匹配
-
高亮查询
|