Elastic Search 新手入门笔记(一)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 前言因为最近在写一个功能点是与Elastic Search 相关的,所以最近在完成功能的基础上,还去查了很多有关于Elastic Search的文档。Elastic Search 的 client ,还是不少的,但是现在我只用了Java High Level REST Client。

前言

因为最近在写一个功能点是与Elastic Search 相关的,所以最近在完成功能的基础上,还去查了很多有关于Elastic Search的文档。Elastic Search 的 client ,还是不少的,但是现在我只用了Java High Level REST Client。下面是进行的总结,希望也可以帮助像我一样的小白。

多说一点: 这是我的第一篇笔记,作为一个马上要毕业的大学生来说,多学,多听,多积累,是很有必要的。有可能语言上比较晦涩难懂,技术的阐述上也不是那么娴熟准确,但是我会好好努力的。

为什么用到Elastic Search?

这里的Elastic Search 泛指的是全文检索。在刚接触的时候,我想过这样一个问题,在关系型数据库mysql的like进行模糊查询的效果,与Elastic Search这样的全文检索,效果几乎就是一样的,那为什么还要用全文检索呢?如果是学了一些的现在的我,遇上了刚开始接触全文检索的我的话,一定会指着自己的鼻子说:“你真是无知啊。”

原因我觉得一共有两个:

第一个是查询的速度特别快!在关系型数据库中,数据是结构化的,我们当要进行模糊查询的时候,会从想要查询的表的第一条数据开始比对,如果不是,继续下一条,如果再不是,继续去查,就这样一直查下去,直到查到了,自己想要的那条数据。而Elastic Search呢?它其实使用了倒排索引的索引方法。大概意思其实是这样的:现在一个有三篇文章

|   id    |         content               |

|--------|------------------------------|

|文章1| Java是世界上最好的 . |

|文章2| 人生苦短,快学python|

|文章3| C++是世界上最难的 .  |

这也是存储在关系型数据库中的存储形式,查询的话,他会一行行的进行查询。而如果存在了Elastic Search 中会变成什么样子呢?在全文检索中存在这分词器这么个东西,分词器会把输入的句子自动的进行一定规律进行分割,例如过空格分割,下划线分割,等等。如果是中文,也有插件可以对其进行语义分割。分割后的效果如下所示(只是举例子,真实情况未必如此)

|关键词   | 文章号|

|------------|----------|

|世界       | 1,3    |

|人生苦短|   2 .     |

|Java       |   1 .     |

|python    |   2       |

|C++        |   3       |        

当我们输入世界,立刻就知道出现在了第一个,和第三个文章中。

第二个是因为我们在做全文检索的时候,根本用不到那么复杂的逻辑,我们用到基础的增删改查就行,使用了Elastic Search 之后,我们在用不用折腾数据库那么多的数据了。

我们怎么去使用Elastic Search?

在我们看来学习一门新的技术最主要的还是要去多看看官网,最基本能用到的官网应该都会说。这是官网传送门:https://www.elastic.co/ ,接下来是 rest high level api的传送门:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.3/java-rest-high-getting-started-initialization.html。官网上有怎么进行下载,安装,如何使用的方法。如果觉得官网写的不是那么细致还有大牛们在各大博客上,进行的知识分享。

以下是使用Rest high level api 操纵Elastic Search的

https://www.cnblogs.com/ginb/p/8716485.html

https://blog.csdn.net/paditang/article/details/78802799

还有使用curl操纵Elastic Search 的

https://www.cnblogs.com/mycd/p/7859792.html

个人使用经验

刚使用了半个多月,以下是我的个人拙见,分析也不是特别全面。

我个人在简单的连接到Elastic Search 的时候,使用的是Post Man,有可能是因为先入为主的原因吧,在上大学的时候,无意间接触到了这个神奇,然后便一发不可收拾。它可以发送get,post , put, delete 等 所有的rest api 。并且可以携带上各种参数,无论是在请求头,还是请求体。不但如此,在有spring security防护下的项目,我们可以携带上token进行访问。不但如此,我最喜欢的还是他能存储url的功能,方便快捷。所有这些功能,再有可视化界面的加持下,显得更加的舒服。

Post Man 操纵Elastic Search 命令如下 :

首先我先声明一个全局变量(开个玩笑)其实就是把下文中的所有 http://ip:port/_index/_type 换成了 ES ,这里值得说一下的是_index类似于像是database的概念,_type类似于table的概念。以上参数都可以换成自己对应的参数。

创造一个文档,我们使用PUT请求,url为: ES/_id content-type选择application/json,然后写一个json数据例如:

{

    "first_name" : "John",

    "last_name" :  "Smith",

    "age" :        25,

    "about" :      "I love to go rock climbing",

    "interests": [ "sports", "music" ]

}

这样就成功创建了一个文档。可以使用不同的_id创建多个文档,如果我们使用了相同的id使用不同的json数据,那么相当于修改操作。

查询一个文档,我们使用GET请求,url为:ES/_id。在这里如果添加了?pretty。形如ES/_id?pretty那么结果就会显示为整齐json格式。返回的结果中的 _source为本文档用户插入的数据,其余的为这篇文档的元数据。

如果我们使用了ES/_search,那么就是不添加任何条件,进行全部搜索。

如果想进行准确查询ES/_search?q=key:value。在这里key为想要查询的字段,value为想要查询的结果。

删除一篇文档,我估计我不说,大家也会猜出来了吧。没错,就是使用DELETE请求,发送ES/_id即可。

本文纯手打,不但是对自己学习的一种总结,也希望可以帮助到需要帮助的人,谢谢大家。不喜勿喷。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
2月前
|
前端开发 Java iOS开发
elasticsearch8.1源码编译笔记
elasticsearch8.1源码编译笔记
36 0
|
3月前
|
关系型数据库 MySQL 索引
|
4月前
|
自然语言处理 安全 关系型数据库
|
JSON 安全 搜索推荐
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
621 0
|
Java 数据库 Docker
Elasticsearch笔记
Elasticsearch笔记
121 0
Elasticsearch笔记
|
存储 Web App开发 搜索推荐
Elasticsearch笔记(集群插件、kibana、什么是倒排索引)
Elasticsearch笔记(集群插件、kibana、什么是倒排索引)
Elasticsearch笔记(集群插件、kibana、什么是倒排索引)
Elasticsearch核心技术与实战-极客课程笔记
Elasticsearch核心技术与实战-极客课程笔记
391 0
Elasticsearch核心技术与实战-极客课程笔记
|
搜索推荐
ElasticSearch笔记
ElasticSearch笔记
112 0
ElasticSearch笔记
|
SQL JSON 自然语言处理
白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。(三)
白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。(三)
246 0
|
搜索推荐 索引
白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。(二)
白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。(二)
310 0

热门文章

最新文章