ElasticSearch分布式全文搜索引擎的学习心得

1.认识ElasticSearch

1.1:我们为什么要去使用ElasticSearch

虽然全文搜索领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

实际项目中,我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON/XML通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并在需要扩容时方便地扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。

1.2:ElasticSearch简称es

ES即为了解决原生Lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案,其第一个版本于2010年2月出现在GitHub上并迅速成为最受欢迎的项目之一。

首先,ES的索引库管理支持依然是基于Apache Lucene(TM)的开源搜索引擎。

ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

不过,ES的核心不在于Lucene,其特点更多的体现为:

分布式的实时文件存储,每个字段都被索引并可被搜索

分布式的实时分析搜索引擎

可以扩展到上百台服务器,处理PB级结构化或非结构化数据

高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之

交互。

上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装即可使用),只需很少的学习既可在生产环境中使用。

2.ElasticSearch的安装

es服务只依赖于jdk,所有建议使用1.7及以上的jdk

① 下载ES安装包

官方下载地址:https://www.elastic.co/downloads/elasticsearch

② 运行ES

bin/elasticsearch.bat

③ 验证

访问:http://localhost:9200/

3.ES交互方式

① 基于RESTful API

ES和所有客户端的交互都是使用JSON格式的数据.

Curl命令方式:

默认windows下不支持curl命令

② Java API

ES为Java用户提供了两种内置客户端:

节点客户端(node client):

节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。

传输客户端(Transport client):

这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。

4:扩展(什么是RESTful)

Restful是一种面向资源的架构风格,可以简单理解为:使用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作

使用Restful的好处:●透明性,暴露资源存在  充分利用 HTTP 协议本身语义 无状态,这点非常重要(在调用一个资源接口的时候不用考虑上下文,不用考虑当前状态,极大的降低了复杂度)

4.Restful的典型特征:

① Server提供的RESTful API中,URL中只使用名词来指定资源

② REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露

③ 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。

5.辅助管理工具

① Kibana5.2.2下载地址:https://www.elastic.co/downloads/kibana

② 解压并编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES

③ 启动Kibana5 : bin\kibana.bat

使用Dev Tools进行es代码编程

一个文档里面不只有数据,它还包含元数据(metadata)—关于文档的信息。三个必须的元数据节点是:

_index:索引库,类似于关系型数据库里的“数据库”—它是我们存储和索引关联数据的地方。

_type:在应用中,我们使用对象表示一些“事物”,例如一个用户、一篇博客、一个评论,或者一封邮件。可以是大写或小写,不能包含下划线或逗号。我们将使用 employee 做为类型名。

_id:与 _index  和 _type  组合时,就可以在ELasticsearch中唯一标识一个文档。当创建一个文档,你可以自定义 _id  ,也可以让Elasticsearch帮你自动生成。

6.使用Kibana5进行es的crud

6.1:创建一条数据(crm索引库,student表,1代表字段)

6.2:查询一条数据

6.3:删除一条数据

6.4:修改一条数据

6.5:进行批量添加

6.6:查询全部

7.DSL查询与过滤

7.1:什么是DSL查询

由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。

DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。我们可以这样表示之前关于“倪先华”的查询:

查询字符串模式:GET crm/student/_search?q=fullName:倪先华

8.使用java进行es的crud

8.1:创建一个maven项目

8.2:在pom.xml写入需要的包(可以弄一个本地仓库就不用去网上下载jar包了)

8.3:先获取客户端


8.4:使用java代码添加一条数据

8.5:删除一条数据

 

8.6:修改一条数据

 

8.7:如果有就修改没有就创建一条数据

8.8:进行批量添加

8.9:进行高级查询

希望这篇文章能让想学习ElasticSearch的朋友有所帮助,一起共同进步,学习,交流!!!

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值