本文是笔者学习ElasticSearch的笔记,ElasticSearch教程网址为http://www.imooc.com/learn/889
ElasticSearch是基于Apache Lucene构建的开源搜索引擎,可以轻松地横向扩展,可支持PB级的结构化或者非结构化数据处理。
ElasticSearch应用场景:
海量数据分析引擎
站内搜索引擎
数据仓库
ElasticSearch版本历史:1.x ——> 2.x ——> 5.x
版本选择:
2.x 稳定、成熟、插件多,但是官方不在维护
5.x 效率高,官方在维护
注:在我写这篇随笔时ElasticSearch已经更新到6.x了
ElasticSearch安装:
由于教程作者使用的是Mac,我使用的是Windows。所以在Windows上安装ElasticSearch是我在网上查找资料完成的。具体步骤如下:
首先,从官网下载ES,官网地址:https://www.elastic.co/。下载zip
第二,将下载的zip解压到响应位置。
第三,cmd进入解压有的文件bin中,执行elasticsearch-service install 命令,等待安装结束。
第四,cmd进入解压有的文件bin中,执行elasticsearch-service start 命令,启动ES。
第五,cmd进入解压有的文件bin中,执行elasticsearch-service stop 命令,停止ES。
ElasticSearch-head插件安装:
由于教程作者使用的是Mac,我使用的是Windows。所以在Windows上安装ElasticSearch-head是我在网上查找资料完成的。地址如下:
http://blog.csdn.net/u012270682/article/details/72934270
ES基础概念
集群:一个或多个ES节点构成;
节点:一个节点只能从属于一个集群;
索引:含有相同属性的文档集合;
类型:索引可以定义一个或者多个类型;
文档:可以被索引的基本数据单位,一个文档必须属于一个类型;
索引、类型、文档可以看做是数据库、表、记录。
分片:每个索引都有多个分片,每个分片是一个Lucene索引;
备份:拷贝一份分片就是完成了分片的备份。
ES基本用法
ES的API组成:http://<ip>:<port>/<索引>/<类型>/<文档id>
ES常用HTTP动词:GET/PUT/POST/DELETE
1. 创建索引
非结构化索引、结构化索引
URL:http://127.0.0.1:9200/people
动词:PUT
{ "settings":{ "number_of_shards":3, "number_of_replicas":1 } , "mapping":{ "man":{ "properties":{ "name":{ "type":"text" }, "country":{ "type":"keyword" }, "age":{ "type":"integer" }, "data":{ "type":"data", "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd" } } } } }
2. 插入
指定文档id插入
URL:http://127.0.0.1:9200/people/man/1
动作:PUT
{ "name":"aston", "country":"中国", "age":27, "data":"1990-01-01" }
自动产生文档id插入
URL:http://127.0.0.1:9200/people/man/
动作:POST
{ "name":"aston1", "country":"中国", "age":10, "data":"1987-01-01" }
3. 修改
直接修改文档
URL:http://127.0.0.1:9200/people/man/1/_update
动词:POST
{ "doc":{ "name":"who is aston?" } }
脚本修改文档
URL:http://127.0.0.1:9200/people/man/1/_update
动词:POST
{ "script":{ "lang":"painless", "inline":"ctx._source.age = params.age", "params":{ "age":100 } } }
4. 删除
删除文档
URL:http://127.0.0.1:9200/people/man/1
动作:DELETE
删除索引
URL:http://127.0.0.1:9200/book
动作:DELETE
5. 查询
简单查询
URL:http://127.0.0.1:9200/people/man/1
动作:GET
条件查询
URL:http://127.0.0.1:9200/people/_search
动作:POST
{ "query":{ "match_all":{ } }, "from":1, "size":1 }
{ "query":{ "match":{ "name":"aston" } }, "sort":[ {"age":{"order":"desc"}} ] }
聚合查询
URL:http://127.0.0.1:9200/people/_search
动作:POST
{ "aggs":{ "group_by_word_count":{ "terms":{ "field":"age" } } } }
高级查询