ElasticSearch入门与实战

2018-07-27  本文已影响0人  xialedoucaicai

本文将对ES做一个入门级别的介绍,采用的ES版本为5.5,主要对ES的整个开发流程做一个简单说明,同时会给出实际的代码,建议同时参看瓦力老师的ElasticSearch入门,三者结合,能在最短的时间内实现ES开发。

因为是快速入门+实战,所以就遵循二八原则,只涉及最常用的内容,如果需要更深入,更权威的理解使用ES,请直接移步官方文档。

1.环境准备

对应视频前两章,先简单认识下ES,然后把环境搭起来。

2.重要概念

可以参看上述视频第三章,这里也可以简单说一下,注意对概念的理解很重要,是必须要掌握的。
来看下ES和MySQL的简单类比
MySQL-> Database -> Table -> Row -> Column
Elasticsearch -> Index -> Type -> Document -> Field

两者操作步骤的类比
MySQL->建数据库->建表(表字段 字段类型)->对每行数据增删改查
ES->建立Index->建立Mapping(字段 字段类型)->对Document增删改查

其他概念:集群 节点 分片 备份,直接看官方文档吧,这些概念对快速入门影响不大。

3.ES实战

  1. 搭建SpringBoot+ES环境(视频第6章),这里我们没有使用SpringData的ES组件,直接使用了ES提供的Java客户端。
  2. 通过Rest API接口,使用Postman发送Json数据建立Index和Mapping(包含Type Field),对应视频第四章。这一步就是对需要参与搜索的字段建立映射,在映射时需要根据字段性质来选择Type。
    常用的Type有如下这几个:
  1. 增删改Document
    假设我们是要做一个搜房网,那么我们需要在添加房源/修改房源/房源被出租时,同步更新ES的Document。将ES的增删改代码放到业务逻辑的增删改之后,我们可以通过ES的Java API来实现,对应视频第四章。
  2. 查询
    对应视频第五章。这部分就是ES的核心内容,就像SQL的查询语句一样,使用很灵活,还有各种优化,作为入门,我们只看最基本,最常用的内容。
    基本使用方式,使用布尔查询来嵌套其他查询。
    常用的查询有如下这几种:
    termQuery,精确匹配,不会对输入条件进行分词,适用于对keyword的查询
    matchQuery,对用户输入的查询条件进行分词,只要有其中一个关键词匹配即可,比如输入条件"elasticserach入门" 将会按照elasticsearch 和 入门两个关键词来匹配,适用与对text的查询
    multiMatchQuery,matchQuery的升级版,多字段匹配 比如要求标题或内容含有某关键字
    rangeQuery,范围查询,比如查询票价在40~80元之间的影片
    filter,过滤查询,圈定一个范围,结果只有"是","否"两中可能,就像招聘要求博士学历一样,而query会对查询结果进行评分,就像从博士学历的人中找最适合这个岗位的人选。
    查询中其他的常见需求
    聚合查询,进行统计,比如查出周星驰导演的影片数量
    分页,排序
    高亮展示关键字,就像我们用百度会对关键字标红
    对数组查询,比如一个影片有很多标签,只要含有我们输入的标签,就都查出来
    时间范围查询,日期还是比纯文本要麻烦一点,从建Mapping,到接收前端的输入条件,到使用API查询,每一步该取什么类型,字符串和日期如何相互转换,都是需要考虑的问题。
    整合MQ
    我们的ES对Document的操作是直接放在原有业务逻辑之后的,假设我们ES需要索引的数据不能直接拿到,可能要花点时间,这样就会导致用户操作后需要等待ES的操作结束才能响应。我们可以结合之前学习的RabbitMQ,将ES的操作交给MQ来执行,将业务解耦,提升用户体验。

4.完整代码

完整代码看这里,可以直接下载使用,没有业务逻辑的干扰,是一个基本可以涵盖常用操作的demo。

上一篇 下一篇

猜你喜欢

热点阅读