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即可。
本文纯手打,不但是对自己学习的一种总结,也希望可以帮助到需要帮助的人,谢谢大家。不喜勿喷。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[20180702]对象名重用.txt
[20180702]对象名重用.txt --//链接:https://amitzil.wordpress.com/2018/06/28/non-existent-objects-and-possibly-a-bug/,重复测试: 1.环境: SCOTT@test01p> @ ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0 2.测试: CREATE OR REPLACE PROCEDURE testobj AS BEGIN NULL; END; / DROP ...
- 下一篇
Python全栈工程师(数值类型、运算符)
ParisGabriel Python 入门基础 python的应用领域: 1.系统运维 2.网络编程(如:网络爬虫,搜索引擎,服务器编程) 3.科学计算 4.航空领域(如:卫星,导弹,等) 5.人工智能,机器人 6.web开发、 7.云计算 8.大数据以及数据库开发 9.教育 10.游戏,图像处理 等等。。 python的优点: 1.面向对象(java、C++、python、C#、swift) 2.开源免费 3.跨平台(windows、Linux、Unix、iOS、Android) 4.混合编程(C、C++、java、.net) 5.应用领域广泛 python的缺点: 1.执行速度没有C、C++快、较慢的java、相对而言也比较慢 2.源代码不能加密 python的组成: 1.程序是由模块组成的 2.模块是由数据、函数、支持库、类等组成的 3.函数是由语句块组成的 4.语句块是有表达式组成的 Python的核心数据类型: (整数int,浮点数float,复数complex,布尔型bool、 字符串 str 列表 list 等) 1.十进制表示方式10 200 -100 99...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境