ES入门宝典(详细截图版)
本文使用版本基于elasticsearch-6.4.0
1、什么是es?
官网:
中文官网:
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还可以提升搜索操作的吞吐量和性能。
文档document
es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用json数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。
面向文档存储
(1)应用系统的数据结构都是面向对象的,复杂的
(2)对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当麻烦
(3)es是面向文档的,文档中存储的数据结构,与面向对象的数据结构是一样的,基于这种文档数据结构,es可以提供复杂的索引,全文检索,分析聚合等功能
(4)es的document用json数据格式来表达
映射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
curl -l -o https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
新建 切换用户
useradd es passwd es su es
解压
tar -zxvf elasticsearch-6.4.0.tar.gz
修改配置
cd conf vim elasticsearch.yml es配置:集群 日志位置 数据位置 访问限制等等 vim jvm.options jvm配置
启动
./bin/elasticsearch
9300:集群节点间通讯接口
9200:客户端访问接口
访问9200可以看见数据返回
curl localhost: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数据“
}
例子:
put /blog01/article/1 { "id": "1", "title": "elasticsearch" "desc":"elasticsearch" } put /blog01/article/2 { "id": "2, "title": "kibana " "desc":"kibana " }
es会自动建立index和type,不需要提前创建,而且es会默认对document的每个field都建立倒排索引,让其可以被搜索。
查询 get /blog01/article/1
修改
(替换方式) 替换必须带所有信息 put /blog01/article/1 { "id": "1", "title": "elasticsearch" "desc":"elasticsearch_new" } (更新方式) post /blog01/article/2/_update { "doc": { "desc":"elasticsearch_new" } }
删除 delete /blog01/article/1
简单搜索
query string search
search参数http附带
took:整个搜索请求花费了多少毫秒
timed_out:是否超时
_shards:切片
hits.total:本次搜索,返回了几条结果
hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前
get /blog01/article/_search?q=desc:kibana { "took": 4, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.2876821, "hits": [ { "_index": "blog01", "_type": "article", "_id": "2", "_score": 0.2876821, "_source": { "id": "2", "title": "kibana ", "desc": "kibana " } } ] } }
query dsl
domain specified language
带json请求体查询
get /blog01/article/_search { "query": { "match_all": {} } }
query filter
bool可以封装多个条件 “must”必须匹配 “filter”过滤
get /blog01/article/_search { "query" : { "bool" : { "must" : { "match" :{ "desc" : "kibana" } } } } }
全文检索 full text search
会根据两个词 去倒排索引查找 匹配上任意一个就会返回 匹配度最高的文档排在前面
get /blog01/article/_search { "query" : { "match" :{ "desc" : "kibana test" } } }
短语搜索 phrase search
两个词必须都包含
get /blog01/article/_search { "query" : { "match_phrase" :{ "desc" : "kibana test" } } }
高亮结果 highlight search
get /blog01/article/_search { "query" : { "match" :{ "desc" : "kibana" } }, "highlight":{ "fields":{ "desc" :{} } } }
更多es,flink,kafka等实时计算相关博文,欢迎关注实时流式计算:
本文由博客一文多发平台 openwrite 发布!
上一篇: 包拯死后,陪伴左右的展昭去哪里了?
下一篇: 虐狗套路无疑