ES入门宝典(详细截图版)

本文使用版本基于elasticsearch-6.4.0
1、什么是ES?
官网: https://www.elastic.co/products/elasticsearch
中文官网:https://www.elastic.co/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还可以提升搜索操作的吞吐量和性能。
文档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等实时计算相关博文,欢迎关注实时流式计算:

ES入门宝典(详细截图版)的更多相关文章
- mysql 命令行操作入门(详细讲解版)
之前分享过多次Mysql主题,今天继续分享mysql命令行入门 1. 那么多mysql客户端工具,为何要分享命令行操作? -快捷.简单.方便 -在没有客户端的情况下怎么办 -如果是mysql未开启 ...
- ES 入门之一 安装ElasticSearcha
安装ElasticSearcha 学习ES也有快一个月了,但是学习的时候一直没有总结.以前没有总结是因为感觉不会的很多,现在对ES有一点了解了.索性就从头从安装到使用ES做一个详细的总结,也分享给其他 ...
- 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)
<C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...
- c语言入门经典(第5版)
文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF [点击下载] C ...
- powershell入门教程-v0.3版
powershell入门教程-v0.3版 来源 https://www.itsvse.com/thread-3650-1-1.html 参考 http://www.cnblogs.com/piapia ...
- C语言学习书籍推荐《C语言入门经典(第5版)》下载
霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...
- 数据治理之元数据管理的利器——Atlas入门宝典
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为Hadoop生态最紧密的元数据管理与发现工具,Atlas在其中扮演着重要的位置.但是其官方文档不是很丰富,也不够详细.所以整 ...
- 史上最详细“截图”搭建Hexo博客并部署到Github
http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...
- 史上最详细“截图”搭建Hexo博客——For Windows
http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...
随机推荐
- JS中的prototype、__proto__与constructor
1.前言 作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关 ...
- bs4 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0'
Problem: 写爬虫时,出现了以下错误: 意思是Unicode编码错误,gbk编解码器不能编码\xa0字符. 爬取信息包含中文,使用BeautifulSoup库解析网页,用get_text()方法 ...
- redis系列之------数据库
前言 当我们在Redis数据库中set一个KV的时候,这个KV保存在哪里?如果我们get的时候,又从哪里get出来.时间复杂度,空间复杂的等等,怎么优化等等一系列问题. 服务器中的数据库 Redis服 ...
- 采用WPF开发截图程序,so easy!
前言 QQ.微信截图功能已很强大了,似乎没必要在开发一个截图程序了.但是有时QQ热键就是被占用,不能快速的开启截屏:有时,天天挂着QQ,领导也不乐意.既然是程序员,就要自己开发截屏工具,功能随心所欲 ...
- Python分布式爬虫必学框架Scrapy打造搜索引擎 ✌✌
Python分布式爬虫必学框架Scrapy打造搜索引擎 ✌✌ (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 第1章 课程介绍 介绍课程目标.通过课程能学习到 ...
- Web前端学习,需用了解的7大HTML知识点
HTML是web前端开发基础,关于HTML,这里有几个很重要的知识点,在日常开发常常用到,并且在大家面试的时候也会问的,记住这7个重要知识点,助你在面试时优先录用. 1.网页结构 网页结构一般都包含文 ...
- POWERSPLOIT-Recon(信息侦察)脚本渗透实战
Recon(信息侦察)模块 a) 调用invoke-Portscan扫描内网主机的端口. 1)通过IEX下载并调用invoke-portscan. PS C:\Users\Administrator& ...
- 收集的MSSQL注入笔记
①判断数据库类型 and exists (select * from sysobjects)--返回正常为mssql(也名sql server)and exists (select count(*) ...
- 后台模板引擎ejs与前台模板引擎artTemplate的简单介绍
动态网页是指前端页面当中的数据内容来源于后台数据库,前端的html代码会随着后台数据的变化而变化,是动态生成的.制作动态网页有两种方式,一种方式是在后台拿到前端的html模板,利用后台模板引擎(如ej ...
- 《FFT家族—从不会到崩溃(坑)》读blog笔记
免责声明 原文地址https://blog.csdn.net/linjiayang2016/article/details/80341958,作者linjiayang2016.\text{linjia ...