文章目录

  • 一、作者有话说
    • 1.1 专业术语(必须进行掌握)
      • 1.1.1 索引 index
      • 1.1.2 映射 mapping
      • 1.1.3 字段 field
      • 1.1.4 术语 term
      • 1.1.5 文本 text
    • 1.2 操作工具为 elasticsearch head
  • 二、实际进行操作
    • 2.1 操作es的步骤
    • 2.1 使用自动创建的形式创建index
      • 2.1.1 常规操作创建格式: POST 索引/_doc
      • 2.1.2 查看 创建的索引和数据
    • 2.2 删除index
      • 2.2.1 删除格式: DELETE /索引
  • 三、从es head来看es的重要的搜索功能
    • 3.1 查找某个文档的全部内容 match_all
      • 3.1.1 查看全部格式: POST 索引/_search
    • 3.2 search的各种过滤,注意看每张图的区别
      • 3.2.1 match 全文匹配
      • 3.2.2 term 术语查询
      • 3.2.3 wildcard 通配符查询
      • 3.2.4 prefix 前缀查询
      • 3.2.5 fuzzy 模糊查询
      • 3.2.6 range 范围查询
      • 3.2.7 query_string 查询解析器
  • 四、结尾

一、作者有话说


本文为了更加详细的讲解elasticsearch的操作,全部都是根据官网一点点进行说明。有兴趣对官网进行阅读的同学,建议移步官网
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/getting-started-index.html

1.1 专业术语(必须进行掌握)

专业术语对学一个中间件来说,是非常重要的,建议大家先了解以下的专业术语
https://blog.csdn.net/qq_34168515/article/details/108315484

本文只介绍几个常用的术语

1.1.1 索引 index

索引就像关系数据库中的表。它具有一个包含type的 映射,该type包含索引中的字段。

注意:因为从6.x开始,就不推荐使用type是,但是为了兼容以下版本,type统一为 _doc

1.1.2 映射 mapping

映射就像关系数据库中的架构定义。每个 索引都有一个映射,该映射定义一个type,以及许多索引范围的设置。

注意:mapping一旦生成之后,就无法进行修改了,除非重新建立一个新的索引,再拷贝过去

1.1.3 字段 field

一个文件包含字段或键-值对的列表。该值可以是简单(标量)值(例如,字符串,整数,日期),也可以是嵌套结构(如数组或对象)。字段类似于关系数据库中表中的列

1.1.4 术语 term

术语是在Elasticsearch中索引的精确值。该条款 foo,Foo,FOO是不等价的。可以使用术语查询来搜索术语(即精确值)。

1.1.5 文本 text

文本(或全文)是普通的非结构化文本,例如本段。默认情况下,文本将被分析为 term,这是索引中实际存储的内容。

文本字段需要在索引时进行分析才能作为全文搜索,并且全文查询中的关键字必须在搜索时进行分析以产生(和搜索)与索引时生成的词相同的术语。

1.2 操作工具为 elasticsearch head

界面
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

es head的下载方式,由于篇幅问题,请自行百度!!!!!!

二、实际进行操作


参考官方 rest-api操作

https://www.elastic.co/guide/en/elasticsearch/reference/7.9/rest-apis.html

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

2.1 操作es的步骤


elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

2.1 使用自动创建的形式创建index


elasticsearch head操作

2.1.1 常规操作创建格式: POST 索引/_doc

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网
格式:

POST 索引/_doc
{json方法体
}

案例,为索引为can123添加数据,不指定id,会自动增加id

POST can123/_doc
{"user" : "kimchy","createDate" : "2020-09-06 11:19:10","message" : "trying out Elasticsearch"
}

2.1.2 查看 创建的索引和数据

索引、索引对应的mapping,也就是数据库格式,都创建好了,我们查看一下

存在问题?由于createTime字段,是需要date时间格式的,但是mapping映射却是text格式,明显是不对,后续介绍如何进行处理

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网
查看存入的数据
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网
为了方便后续的测试,请添加多条数据

按照前面的例子进行增加

{"user":"dog","createDate":"2020-09-06 11:19:10","message":"four leg dog"}
{"user":"cat","createDate":"2020-09-06 11:19:10","message":"four leg cat"}
{"user":"frog","createDate":"2020-09-06 11:19:10","message":"four leg frog"}
{"user":"pig","createDate":"2020-09-06 11:19:10","message":"four leg pig"}
{"user":"duck","createDate":"2020-09-06 11:19:10","message":"two leg duck"}
{"user":"chick","createDate":"2020-09-06 11:19:10","message":"chick leg chick"}

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

2.2 删除index

  • 首先添加一个索引,方面后面删除
POST twitter/_doc/
{"user" : "kimchy","post_date" : "2009-11-15T14:12:12","message" : "trying out Elasticsearch"
}

2.2.1 删除格式: DELETE /索引

  • 删除索引格式:
DELETE /索引
  • 删除索引中的id格式
DELETE /索引/文档id
  • 删除索引为 twitter
DELETE /twitter/

三、从es head来看es的重要的搜索功能


3.1 查找某个文档的全部内容 match_all

3.1.1 查看全部格式: POST 索引/_search

  • 搜索格式
POST 索引/_search
  • 例如,搜索can123的所有数据
POST can123/_search

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2 search的各种过滤,注意看每张图的区别

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2.1 match 全文匹配

match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程

查询 message 包含关键字dog的文档,ps: 注意和 term 的区别
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

查询 message 包含 red dog的文档,ps: 注意和 term 的区别

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2.2 term 术语查询

term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇

查询 message 包含关键字dog的文档,ps: 注意和 match 的区别
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

查询 message 包含 red dog的文档,ps: 注意和 match 的区别
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网
结论:

  1. match进行分词器分析, 所谓的分词,就是把当前的value进行分词

  2. term是代表完全匹配,即不进行分词器分析

3.2.3 wildcard 通配符查询

类似正则表达式,可以对数据进行过滤查找

查找ck,如果正常的match是无法查找到的

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

采用通配符查询 *ck,就可以查找到

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2.4 prefix 前缀查询

类似通配符查询,查找以xxx开头的关键字,参与倒排索引的每一个词查询前缀

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2.5 fuzzy 模糊查询

在实际的搜索中,我们有时候会打错字,从而导致搜索不到。在Elasticsearch中,我们可以使用fuzziness属性来进行模糊查询,从而达到搜索有错别字的情形。

match查询具有“fuziness”属性。它可以被设置为“0”, “1”, “2”或“auto”。“auto”是推荐的选项,它会根据查询词的长度定义距离。

错别字模糊查询:那么它可以显示搜索的结果,这是因为我们能够容许两个编辑的错误。模糊性是拼写错误的简单解决方案,但具有很高的CPU开销和非常低的精度。

例如match查找 chack 是无法查询到的
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

但是使用fuzzy查找 chack是可以查找到 chick的

elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

3.2.6 range 范围查询

范围查询,感觉非常好理解,就是 lt 小于某个范围, gt大于某个范围。

3.2.7 query_string 查询解析器

官方解释:使用具有严格语法的解析器,根据提供的查询字符串返回文档。

该查询使用语法根据操作符(如and或NOT)来解析和分割所提供的查询字符串。然后,查询在返回匹配的文档之前独立分析每个分割文本。

可以使用query_string查询创建包含通配符的复杂搜索、跨多个字段的搜索等等。虽然通用,但查询是严格的,如果查询字符串包含任何无效语法,则返回错误。

可以写正则表达式,或者使用or and 等对查询语句进行拼接,会更加灵活

同时查找 dog 和 cat
elasticsearch7.9操作必看结合官方文档 es head的操作必看 es增删改查全详解-编程知识网

四、结尾


大部分的程序员,都是面向百度或者谷歌进行编程的,而网上的资料乱七八糟,有时候找起来让人难受,于是本人无偿进行资料收集的工作,大部分资料都是本人实打实收集的而且测试过,大家不用怀疑准确性,奈何能力有限,免于遗漏,希望读者可以在评论或者私信我,进行改正,大家一起为互联网技术做贡献。

========================

收集资料枯燥无味,如果本文对你有帮助,可以点个赞,这个也是对我最大的鼓励和赞许。

本人行不改名坐不改姓,潮汕的灿灿展

立志在互联网这一行,做出自己的贡献

========================