本文使用版本基于elasticsearch-6.4.0 1、什么是ES?官网: https://www./products/elasticsearch 中文官网:https://www./cn/products/elasticsearch ES是一个全文检索引擎,提到全文检索,就要说一下以下几个概念: 搜索:寻找想要的信息,根据关键字找到想要的信息。 倒排索引:反向索引,提取关键字建立索引,不需要全部遍历,提高效率,减少扫描次数。 lucene,就是一个jar包 里面有倒排索引和一些算法 可以基于lucene api进行全文检索的开发,api复杂。 了解全文检索,可以关注这篇文章什么是全文检索 ES也就是Elasticsearch又是什么呢? 封装lucene 提供企业级服务; 基于Apache lucene构建得开源搜索引擎; java编写 简单易用得RESTFul API; 横向扩展 支持PB级的结构化或非结构化数据处理; ES的功能: 1)分布式的搜索引擎和数据分析引擎。 2)全文检索,结构化检索,数据分析。 3)对海量数据进行近实时的处理。 应用场景: 海量数据的分析引擎;站内搜索引擎;数据仓库。 国外:维基百科,Stack Overflow,GitHub 国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景) 2、主要概念索引index逻辑存储 相当于关系型数据库的表 每个索引有一或多个分片(shard) 每个分片有多个副本(replica) 分片shard单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。 副本replica任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。 文档documentes中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。 面向文档存储(1)应用系统的数据结构都是面向对象的,复杂的 映射mapping文档中的每个字段根据不同类型做相应分析。 ES核心概念 vs. 数据库核心概念索引(indices)-------------Table 数据表 文档(Document)--------Row 行 字段(Field)-------Columns 列 3、安装部署安装JDK,至少1.8.0_73以上版本 win下部署ES下载win版本 解压 放在d盘 同步命令行启动 C:\Users\JN>d: D:>cd D:\elasticsearch-6.4.0>cd bin D:\elasticsearch-6.4.0\bin>elasticsearch.bat kibana也是 C:\Users\JN>d: D:>cd kibana-6.4.0-windows-x86_64 D:\kibana-6.4.0-windows-x86_64>cd bin D:\kibana-6.4.0-windows-x86_64\bin>kibana.bat 部署成功: 可以通过localhost:9200访问es localhost:5601访问kibana linux下部署ES下载linux版本ES
新建 切换用户
解压
修改配置
启动
9300:集群节点间通讯接口 9200:客户端访问接口 访问9200可以看见数据返回
4、简单Restful Api操作网页访问kibana localhost:5601 选择 Dev Tools 基本操作集群健康 GET /_cat/health 1556162587 11:23:07 elasticsearch green 1 1 1 1 0 0 0 0 - 100.0% 查看索引 GET /_cat/indices?v green open .kibana NHt9dbSkRWaom_Df6cyi6w 1 0 1 0 4kb 4kb 创建索引 PUT /test_index?pretty 删除索引 DELETE /test_index?pretty CRUD操作PUT /index/type/id { ”json数据“ } 例子:
es会自动建立index和type,不需要提前创建,而且es会默认对document的每个field都建立倒排索引,让其可以被搜索。 查询 GET /blog01/article/1 修改
删除 DELETE /blog01/article/1 简单搜索query string search search参数http附带 took:整个搜索请求花费了多少毫秒 timed_out:是否超时 _shards:切片 hits.total:本次搜索,返回了几条结果
query DSL Domain Specified Language 带json请求体查询
query filter bool可以封装多个条件 “must”必须匹配 “filter”过滤
全文检索 full text search 会根据两个词 去倒排索引查找 匹配上任意一个就会返回 匹配度最高的文档排在前面
短语搜索 phrase search 两个词必须都包含
高亮结果 highlight search
|
|