1. 关于Elasticsearch
Elasticsearch是一个实时的分布式搜索和分析引擎。能用较快的速度去处理大规模数据。
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful接口。
Elasticsearch底层用Java开发,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎,多用于云计算中,能够快速地实时搜索。
Elasticsearch快速、稳定、可靠、安装和使用十分方便,已成为越来越流行的搜索组件构建工具。
2. Elasticsearch特点
(1)可以作为一个大型分布式集群(多台服务器),应用于企业级项目,处理PB级数据,也可以作为单机版,运行在单机上。
(2)将全文检索、数据分析以及分布式技术,合并在了一起,组成独一无二的ES系统。
(3)开箱即用,部署使用十分简单。
(4)支持全文检索,同义词处理,相关度排名,复杂数据分析,和海量数据的准实时处理。
3. Elasticsearch体系结构
Elasticsearch与MySQL比较,各部分对比如下:
MySQL 中有数据库(Database)、表(Table)、行(Row),
Elasticsearch中有索引(Index)、类型(Type)、文档(Document)
4. 下载、安装及启动
4.1 下载
从以下站点下载: https://www.elastic.co/downloads/past-releases/elasticsearch-6-5-4
4.2 安装
解压即可用,无需安装
4.3 启动
cd ~/elasticsearch/bin ./elasticsearch
4.4 查看
成功启动后,可以看到ES启用了两个端口:9300和9200,其中Java开发用9300,其它用9200。
Chrome中输入:http://127.0.0.1:9200/,看到如下类似信息,则表示启动成功:
{ “name” : “yl_node_1”, “cluster_name” : “ylonline”, “cluster_uuid” : “vFqniIIQR5y9V_lJNRTrpA”, “version” : { “number” : “6.5.4”, “build_flavor” : “default”, “build_type” : “tar”, “build_hash” : “d2ef93d”, “build_date” : “2018-12-17T21:17:40.758843Z”, “build_snapshot” : false, “lucene_version” : “7.5.0”, “minimum_wire_compatibility_version” : “5.6.0”, “minimum_index_compatibility_version” : “5.0.0” }, “tagline” : “You Know, for Search”}
5. RESTful方式操作
5.1 新建索引
http://127.0.0.1:9200/newsindex/,用Postman工具PUT方式提交
返回结果:
{
“acknowledged”: true,
“shards_acknowledged”: true,
“index”: “newsindex”
}
5.2 新建文档
http://127.0.0.1:9200/newsindex/news,用Postman工具POST方式提交
{“title”:”乌孙古道穿越天山山脉”,”content”:”乌孙古道穿越天山山脉,徒步线路北起新疆伊犁特克斯县,南至新疆阿克苏地区拜城县,沿途可以看到高山草甸、峡谷、雪山、河流等,途中天堂湖的美景更是让不少驴友向往。”}
返回结果:
{ “_index”: “newsindex”, “_type”: “news”, “_id”: “s8OxK4IBouFOjM8f3Mc2”, “_version”: 1, “result”: “created”, “_shards”: { “total”: 2, “successful”: 1, “failed”: 0 }, “_seq_no”: 0, “_primary_term”: 1}
5.3 查看全部文档
http://127.0.0.1:9200/newsindex/news/_search,用Postman工具GET方式
返回结果:
{ “took”: 143, “timed_out”: false, “_shards”: { “total”: 5, “successful”: 5, “skipped”: 0, “failed”: 0 }, “hits”: { “total”: 1, “max_score”: 1.0, “hits”: [ { “_index”: “newsindex”, “_type”: “news”, “_id”: “s8OxK4IBouFOjM8f3Mc2”, “_score”: 1.0, “_source”: { “title”: “乌孙古道穿越天山山脉”, “content”: “乌孙古道穿越天山山脉,徒步线路北起新疆伊犁特克斯县,南至新疆阿克苏地区拜城县,沿途可以看到高山草甸、峡谷、雪山、河流等,途中天堂湖的美景更是让不少驴友向往。” } } ] }}
5.4 修改文档
http://127.0.0.1:9200/newsindex/news/s8OxK4IBouFOjM8f3Mc2,用Postman工具PUT方式提交,选择Body->raw、JSON
{“title”:”乌孙古道穿越天山山脉,乌孙古道穿越天山山脉”,”content”:”乌孙古道穿越天山山脉,徒步线路北起新疆伊犁特克斯县,南至新疆阿克苏地区拜城县,沿途可以看到高山草甸、峡谷、雪山、河流等,途中天堂湖的美景更是让不少驴友向往。”}
返回结果:
{ “_index”: “newsindex”, “_type”: “news”, “_id”: “s8OxK4IBouFOjM8f3Mc2”, “_version”: 2, “result”: “updated”, “_shards”: { “total”: 2, “successful”: 1, “failed”: 0 }, “_seq_no”: 1, “_primary_term”: 1}
如果ID不存在,则会创建文档。
5.5 根据ID查询
http://127.0.0.1:9200/newsindex/news/tcO_K4IBouFOjM8fgMcJ,用Postman工具GET方式
5.6 条件模糊查询
http://127.0.0.1:9200/newsindex/news/_search?q=title:生活,用Postman工具GET方式
{ “took”: 5, “timed_out”: false, “_shards”: { “total”: 5, “successful”: 5, “skipped”: 0, “failed”: 0 }, “hits”: { “total”: 1, “max_score”: 0.5753642, “hits”: [ { “_index”: “newsindex”, “_type”: “news”, “_id”: “tcO_K4IBouFOjM8fgMcJ”, “_score”: 0.5753642, “_source”: { “title”: “宁静喊你静享生活”, “content”: “不得不说,宁静散发出的底气与睿智” } } ] }}
5.7 删除
http://127.0.0.1:9200/newsindex/news/tMO-K4IBouFOjM8fUsdT,用Postman工具Delete方式
{ “_index”: “newsindex”, “_type”: “news”, “_id”: “tMO-K4IBouFOjM8fUsdT”, “_version”: 2, “result”: “deleted”, “_shards”: { “total”: 2, “successful”: 1, “failed”: 0 }, “_seq_no”: 3, “_primary_term”: 1}