前面我们安装好了ElasticSearch,我以后就简称他为ES,而一些人还不知道基本的使用,那我们接下来做一个快速入门,了解一下他的使用方法,以及一些基本概念,方便我们后来整合,那么要学习ES最好的工具呢,就是我们官方文档,ElasticSearch的官方就是elastic.cohttps://www.elastic.co/cn/learn在了解这一块,有一个docs,https://www.elastic.co/guide/index.html最下边有一个简体中文https://www.elastic.co/guide/cn/index.html点进来就有一个ES的权威指南https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html我们就从这儿开始学习ES,我们这块会刷出目录结构,前两章序言前言就不看了,基础入门来掌握一些核心概念,我们从第一章"你知道的, 为了搜索…",这一块我们要说一个核心概念,安装这些我们已经安装完了,第一个叫"面向文档",https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.htmlElasticSearch它是一个面向文档的,也就是它会存储整个对象,或者文档,不像MYSQL,存储的是数据的一些行列,而存储了文档以后呢,Elastic可以进行索引,检索,排序,过滤,他的数据类型是很丰富的,而且在ES中,我们是使用JSON作为序列化格式的,也就是说,比如我们一个USER对象,最终放到我们ES中,会转化成JSON的格式,类似于这个样子{"email":      "john@smith.com","first_name": "John","last_name":  "Smith","info": {"bio":         "Eco-warrior and defender of the weak","age":         25,"interests": [ "dolphins", "whales" ]},"join_date": "2014/05/01"
}JSON大家都知道,天然的轻量级,和跨平台的优势,那么以后我们一个JSON文档,他就代表一个数据对象,接下来我们来看下一章https://www.elastic.co/guide/cn/elasticsearch/guide/current/_finding_your_feet.html这个就是ES的基本概念,对于ES的初次使用呢,基本概念是难以理解的,不过他在这举了一个例子,比如我们要创建一个雇员目录,我们Megacorp公司,他有一些员工信息,我们这个员工信息呢,经常要进行检索,分析等等,我们要创建一些员工信息,保存在ES中,通过这个例子我们看一下有什么相关的概念https://www.elastic.co/guide/cn/elasticsearch/guide/current/_indexing_employee_documents.html他叫索引雇员文档,我们ES里面要进行数据检索,那ES里面要存一些数据,所以说我们第一个需求,就是要存储一些雇员数据,放在ES中,而我们这些员工数据呢,是以雇员文档,刚才看的JSON文档的方式,一个JSON文档代表一个雇员,而我们把给ES存数据的,行为叫做索引,其实就是存储的意思而已,只不过索引还有一些概念,你想把一个信息存储到ES中,你要索引在ES中之前,你需要确定我们的文档数据,到底要存在ES的哪里,那么就牵涉到一些概念,在ES集群里边,可以有多个索引,前面的索引叫做动词,后面的又称为名词的形式,然后每个索引可以包含多个类型,每个类型又包含多个文档,每个文档又包含多个属性,这段话什么意思呢

我们想给ES集群里面存储数据,比如有谷歌公司,有microsoft公司,有刚才说的megacorp公司,我们要存储员工数据,我们首先确定这个员工是哪个公司的,我可以存在这个节点里面,我们这个节点是megacorp公司的,我们存在这儿,所以我们把这些东西叫做索引,我们第一层叫做索引,我们这个公司有员工信息,也有他的一些产品,包括还有一些他的部门,你存的到底是哪些数据,那么第二级我们称之为类型,我接下来要存的是员工信息,而员工信息呢,数据是什么,我们每一个数据文档,JSON都放到这儿,存了三个文档,所以这三条数据都叫做文档,而这个文档里面呢,自然就有他的属性,比如员工的ID,员工的名字,员工的age,这就是我们说的索引类型,文档属性,其实类比到MYSQL,就非常简单了,什么叫索引呢,就相当于我们MYSQL的数据库一样,我们连上MYSQL,到底要给哪个数据库里面存东西,我们MYSQL里面有很多数据库,而数据库里边又有非常多的表,要是给employee表里存数据,还是要给department表里存数据,类型就是对应MYSQL里的表,表里会有一行一行的记录,这个记录就是我们说的文档,表里的列,都有它的字段,这个我们就称为属性,这个和MYSQL的关系基本是一样的,结合这些概念我们参照ES文档

我们给ES中存储一些员工数据,比如下边的一个例子,我们想要保存一个员工数据,我们将要做这么四步操作,哪四步操作呢,每一个员工我们都保存一个文档,所谓的文档就是JSON数据,这个文档是employee类型,这个数据是员工类型的,而且这个文档放在megacorp这个索引内,然后我们要把保存在ES中,那要做这个操作,看起来很多,其实只需要发一个PUT请求PUT /megacorp/employee/1
{"first_name" : "John","last_name" :  "Smith","age" :        25,"about" :      "I love to go rock climbing","interests": [ "sports", "music" ]
}PUT请求的URL地址呢,前面第一位是索引的名字,把什么数据放在什么位置,放在索引的位置,然后第二个是数据类型的名字,我们是放在employee里面,最后一个是数据的特定标识,我的一号数据,这个消息体就是我们请求的JSON,我们就来发送这个PUT请求,我们就来结合POSTMAN来发送请求,我们来给ES来发请求,把这个关掉,首先把我们的地址复制过来,这是我们交互的地址localhost:9200接下来我们要索引一个员工,我们把URL地址拿过来,然后他必须是一个PUT请求,PUT请求需要带JSON数据,这个数据是员工的文档,JSON数据我们选择raw,txt我们选择application/json,这是我们要带的JSON数据,这块PUT我们来发送

{"first_name" :  "Jane","last_name" :   "Smith","age" :         32,"about" :       "I like to collect rock albums","interests":  [ "music" ]
}/megacorp/employee/2PUT /megacorp/employee/3
{"first_name" :  "Douglas","last_name" :   "Fir","age" :         35,"about":        "I like to build cabinets","interests":  [ "forestry" ]
}这三号员工也保存,那么我们就给ES中存储了这么几个数据,有了这数据呢,ES就能帮我们分析和搜索数据了,我们继续往高级看,检索文档https://www.elastic.co/guide/cn/elasticsearch/guide/current/_retrieving_a_document.html我们之前存了一些数据,我想要检索出来,我怎么办呢,还是发请求,来发一个GET请求GET /megacorp/employee/1只要把PUT请求改成GET请求

发现这一块有响应,响应出来索引,类型,id,包括他找到的数据,found true已经找到了,source就是找到的数据,这个数据有员工的first_name,last_name,age,还有员工的about,interests,这数据我们暂时就检索到了,发送各种请求都能搜到,同样如果你把GET变成DELETE,这个就是删除,如果变成HEAD请求,这是来检查,不是有这个员工,我来发送HEAD,我发现这块没有响应体数据,HEAD请求不存在响应体,注意如果有员工的情况下,3号员工我们有,这块的响应码是200,响应状态码是404

我们发现这一块请求处理完了,这里有响应,响应的内容包括,你这个数据放进哪个索引里面,类型是什么,id是什么,包括这个数据的版本,这个数据是刚才创建的,包括等等一些信息,都在这,这是我们一个数据,那我们来保存更多的数据,我把二号的员工复制来所以这是REST风格,响应404这个资源就没有,这是我们HEAD检查有没有员工,包括DELETE还能删,比如我发delete请求,我要删3号员工,他写found等于true,已经找到了,而且最终是把他delete删掉,删掉我们再来发get请求,我们发现found false

就找不到三号了,我们的GET是用来检索文档,delete我们可以来删除文档,head检查文档是否存在,如果我们想要更新,我们再用PUT命令,新增和修改文档,我们只需要REST API的操作就行了,比如我们还是之前的1号员工为例,我们在保存1号员工的时候呢,我们之前已经保存过一次了,我再来保存一次,比如我要把25改成28,{"first_name" : "John","last_name" :  "Smith","age" :        28,"about" :      "I love to go rock climbing","interests": [ "sports", "music" ]
}我再来保存的时候呢,发现Version会叠加

result是update,我们第一次添加是created,而我们以后还是一号用户,版本每次都会增加,这就是我们使用REST风格,就是改变我们请求方式,对ES中的数据进行增删改查,我们继续来测试更多的基本功能,我们点进轻量搜索里边https://www.elastic.co/guide/cn/elasticsearch/guide/current/_search_lite.html如果我们想要搜素所有的员工,以前我们在这些文档的IDGET /megacorp/employee/_search现在我们只要变成_search我们来试一下,所有数据都在hits里面,有index,有数据的索引,类型,以及ID,我们接下来再往下看,这里还有ID为1的,一个叫Jane,一个叫Jone

这是找所有,包括我们想要哪些条件,比如我们要想找last_name是Smith的GET /megacorp/employee/_search?q=last_name:Smith我们只需要带上这个参数,q=last_name:Smith,这个我们称为查询字符串,http://59.110.158.145:9200/megacorp/employee/_search?q=last_name:Smith我们也同样找到了

他们的last_name都叫Smith,只不过一个叫Jane,一个叫Jone,而我们这个有相关性得分,我们就得到了这条结果,我们可以看更多的搜索查询,比如我们搜索的时候不写查询字符串,我们使用查询的表达式,所谓查询表达式呢,给ES提供一串JSON表达式,JSON里面指定查询规则,GET /megacorp/employee/_search
{"query" : {"match" : {"last_name" : "Smith"}}
}语法大概看一下,查询按照一个匹配规则,匹配规则就是last_name等于Smith,更多的语法可以结合文档慢慢的学习,虽然这个示例是发GET请求,他这个东西是放在请求体中的,GET没有请求体,所以我们测试的时候发POST就行了,查询还是不用写查询字符串了,写上我们这些查询规则

我们看到和之前的效果是一样的,total找到两个没问题,这个JSON查询的表达式,是非常重要的,比如这里有一个更复杂的查询示例,只要我们把查询表达式写的复杂,他就会做更复杂的工作,GET /megacorp/employee/_search
{"query" : {"bool": {"must": {"match" : {"last_name" : "smith" }},"filter": {"range" : {"age" : { "gt" : 30 } }}}}
}匹配last_name是Smith的,filter要过滤,按照什么过滤呢,按照年龄要大于30岁以上,所以我们写了一个复杂的查询规则

定义复杂的查询表达式,我们继续检索其他的检索功能,我们来找全文检索,全文检索我来换上一个表达式GET /megacorp/employee/_search
{"query" : {"match" : {"about" : "rock climbing"}}
}我们根据员工的about字段查,查他是否有"rock climbing",我们来点一个send

还有短语检索https://www.elastic.co/guide/cn/elasticsearch/guide/current/_phrase_search.html我们刚才看到全文检索的情况下,我们要检索的这两个字段,你有任何一个都行,但是往往我们有时候要检索,要他完全匹配,我们把它当做一个完整的单词,而不是分词了,要把它当成完整的单词呢,来进行搜索POST /megacorp/employee/_search
{"query" : {"match_phrase" : {"about" : "rock climbing"}}
}这个时候就只会查处一个结果了,他要完整匹配, 把rock_climbing当成一个单词,那只能查出一条记录,这就是我们说的短语搜索,把它当成一个完整的短语,还有高亮搜索https://www.elastic.co/guide/cn/elasticsearch/guide/current/highlighting-intro.html比如我们还是按照完全匹配的方式,找rock_climbing,然后我们要高亮的字段,在这指定,这是新的查询表达式POST /megacorp/employee/_search
{"query" : {"match_phrase" : {"about" : "rock climbing"}},"highlight": {"fields" : {"about" : {}}}
}

尚硅谷-SpringBoot高级-检索-Elasticsearch快速入门相关推荐

  1. SpringBoot高级-检索-Elasticsearch简介安装

    SpringBoot与检索,主要介绍使用ElasticSearch,包括我们来整合SpringBoot来进行操作,我们说全文检索功能,是我们现在非常常见的一个需求,我们这个开源的ElasticSear ...

  2. 第10章尚硅谷SpringBoot检索

    第10章尚硅谷SpringBoot检索 P20.尚硅谷-SpringBoot高级-检索-Elasticsearch简介&安装 P21.尚硅谷-SpringBoot高级-检索-Elasticse ...

  3. Elasticsearch快速入门2 - 高级查询功能

    我们在Elasticsearch快速入门1中详细介绍了ES的安装.基本概念和一些基本的REST Api请求,在这篇入门(2)中,我们继续介绍ES的高级查询功能. 为了说明ES强大的搜索功能,我们还以上 ...

  4. 尚硅谷MySQL高级JAVA版

    尚硅谷MySQL高级JAVA版 1.MySQL环境 1.1.环境安装 1.2.安装位置 1.3.修改字符集 1.4.配置文件 2.MySQL逻辑架构 3.存储引擎 4.SQL性能下降的原因 5.SQL ...

  5. 尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记

    前言 这个是我学习过程中的笔记,分享给大家,希望对大家有用. 学习内容是尚硅谷JavaScript高级教程(javascript实战进阶),这里是视频链接. 我在前面有两篇对于web前端HTML和CS ...

  6. 【尚硅谷】Web前端零基础入门HTML5+CSS3基础教程

    [尚硅谷]Web前端零基础入门HTML5+CSS3基础教程 学习视频来源:哔哩哔哩弹幕网(https://www.bilibili.com/video/BV1XJ411X7Ud?spm_id_from ...

  7. ELK之ElasticSearch快速入门

    ElasticSearch快速入门 一.简介 二.下载 三.启动 4.基本概念 5. 一.简介 官网:https://www.elastic.co/ ElasticSearch是Elastic Sta ...

  8. 2018尚硅谷SpringBoot视频教程附代码+笔记+课件(内含Docker)

    尚硅谷SpringBoot视频教程(内含Docker)附代码+笔记+课件 下载地址:百度网盘

  9. 尚硅谷SSM高级整合

    2020.12.5–尚硅谷SSM高级整合 写在前面:本人是看完框神ssm框架系列,然后找的其他的ssm整合的资源来练手的,这个尚硅谷的是用eclipse写的,我觉得可以接受就练习了,需要资源的可以私信 ...

最新文章

  1. python 检测文件或文件夹是否存在
  2. 每日一皮:项目开发停在了最后10%的效果...
  3. 7-6 求一元二次方程 (10 分)
  4. 【UOJ】67 新年的毒瘤 【BZOJ】1123 BLO
  5. 使用组合索引你得注意了
  6. 递归优化的这三种方式你知道吗?
  7. 含有5亿个整数的大文件,如果排序?
  8. 元数据解决分表不可 mysql_MySQL InnoDB技术内幕:内存管理、事务和锁
  9. Android软件测试Monkey测试工具
  10. B. Creating the Contest(水题)
  11. ASP.NET程序中常用的三十三种代码一
  12. Access操作的注意事项
  13. Gradle下载 Jar 包
  14. java获取元素创建时间_Golang中使用Date进行日期格式化(沿用Java风格)
  15. android textwatcher 获取当前控件,Android中AutoCompleteTextView与TextWatcher结合小实例
  16. 【大数据语言】怎样利用Python爬虫,高效获取大规模数据
  17. vue项目添加emoji表情
  18. Android 监听软键盘弹出/隐藏,控制软键盘弹出/隐藏
  19. 多线程 java实验心得_java多线程编程体会
  20. 使用IDEA工具远程调试SpringBoot应用

热门文章

  1. PlentyOfFish.com .NET网站的又一传奇
  2. 【Hibernate】JDBC操作与hibernate的区别
  3. React入门-9.redux你好
  4. JavaScript高级程序设计学习(六)之设计模式
  5. 《区块链开发指南》一一第1章 区块链基础
  6. MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)
  7. [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)
  8. 第 十 一 天 : 复 习 完 ( 四 )
  9. 驱动开发类文章公告篇
  10. 计算机四级信息安全题,2014年计算机四级考试信息安全工程精选真题