Elastic Search 新手入门笔记(一)

前言

因为最近在写一个功能点是与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即可。

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

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/658907

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。