微服务项目学习第4天--分布式搜索引擎ElasticSearch(上)

微服务项目学习第4天–分布式搜索引擎ElasticSearch

写在前边(学习内容)

在这里插入图片描述

什么是ElasticSearch

​ Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速 度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分 布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发 的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用 于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

ElasticSearch特点

(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公 司;也可以运行在单机上
(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
(3)开箱即用的,部署简单
(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理

ElasticSearch体系结构

在这里插入图片描述

1、关于搜索的介绍

在这里插入图片描述

2、 elasticsearch的搜索方式

  • (本地Windows模式)在命令提示符下,进入ElasticSearch安装目录下的bin目录,执行命令
 elasticsearch

即可启动。

  • (本地Windows模式)我们打开浏览器,在地址栏输入http://127.0.0.1:9200/ 即可看到输出结果
  • 新建索引
  • 例如我们要创建一个叫articleindex的索引(相当于索引库) ,就以put方式提交
 http://127.0.0.1:9200/articleindex/ 
  • 新建文档:(article是文档类型type)
  • 以post方式提交
http://127.0.0.1:9200/articleindex/article
  • 添加(json)body:
  • 查询某索引某类型的全部数据,以get方式请求
http://127.0.0.1:9200/articleindex/article/_search  
  • 以put形式提交以下地址:
http://192.168.184.134:9200/articleindex/article/AWPKrI4pFdLZnId5S_F7 
  • (服务器地址模式)如果我们在地址中的ID不存在,则会创建新文档
  • eg:以put形式提交以下地址:(会自动创建这条内容)
http://192.168.184.134:9200/articleindex/article/1
  • 按ID查询文档
  • GET方式请求
http://192.168.184.134:9200/articleindex/article/1
  • 基本匹配查询
  • 根据某列进行查询 get方式提交下列地址:
http://192.168.184.134:9200/articleindex/article/_search?q=title:xxx

3、 elasticsearch的端口和测试

3.1 关于9200和9300的使用问题

elasticsearch的9200对应自身的测试以及自身的测试语句
elasticsearch的9300对应项目(外部)的测试以及项目中(外部)的URL路径(项目中配置的也是9300端口)
实例:

3.2 (服务器上的es)es自身的9200:

在这里插入图片描述

3.3 项目中的使用(9300端口)

使用localhost加项目端口来访问(连接的是es的9300端口)
url:http://localhost:9007/article/222/1/1
在这里插入图片描述

4、IK分词器(作为插件放在ES的plugins目录下)

4.1 两种算法:

  • IK提供了两个分词算法ik_smart 和 ik_max_word
  • 其中 ik_smart 为最少切分,ik_max_word为最细粒度划分

(1)最小切分:在浏览器地址栏输入地址
http://127.0.0.1:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员
(2)最细切分:在浏览器地址栏输入地址
http://127.0.0.1:9200/_analyze?analyzer=ik_max_word&pretty=true&text=我是程序员

5、head-日常管理的Elasticsearch图形化界面

(本地URL):http://localhost:9100
服务器:http://192.168.xxx.xxx:9100
在这里插入图片描述

6 、几个端口的分别

这节有好多端口和工具

  • 关于ES的两个端口9200和9300以及使用见3
    关于IK
  • IK只是放在ES中的一个插件
  • 所以使用的端口还是9200,只是有自己的参数(语法)
    在这里插入图片描述
  • head的相关使用端口:9100

7、服务开发:

(1)引入依赖:
在这里插入图片描述
(2)配置文件:(yml文件)
在这里插入图片描述
(3)创建启动类:
在这里插入图片描述
(4)创建实体类:
在这里插入图片描述
(5)创建数据访问接口
在这里插入图片描述
(6)创建业务逻辑类
在这里插入图片描述
(7)创建控制器类
在这里插入图片描述

8、Logstash

Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集 起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。
压缩包解压,进入bin目录

logstash ‐e 'input { stdin { } } output { stdout {} }'

控制台输入字符,随后就有日志输出(可以自己测)

9、MySQL数据导入Elasticsearch

(1)在logstash-5.6.8安装目录下创建文件夹mysqletc (名称随意)
(2)文件夹下创建mysql.conf (名称随意) ,内容如下:

input {
  jdbc {
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => "jdbc:mysql://192.168.xxx.xxx:3306/tensquare_article?characterEncoding=UTF8"
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "root"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => "E:\tensqure\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #以下对应着要执行的sql的绝对路径。
	  #statement_filepath => ""
	  statement => "SELECT id,title,content FROM tb_article"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址与端口
	  hosts => "127.0.0.1:9200" 
	  #ES索引名称(自己定义的)
	  index => "articleindex"
	  #自增ID编号
	  document_id => "%{id}"
	  document_type => "article"
  }
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

(3)将mysql驱动包mysql-connector-java-5.1.46.jar拷贝至E:\tensqure\logstash-5.6.8\mysqletc/ 下 。E:\tensqure\logstash-5.6.8是你的安装目录
(4)命令行下执行

logstash ‐f ../mysqletc/mysql.conf

观察控制台输出,每间隔1分钟就执行一次sql查询。
再次刷新elasticsearch-head的数据显示,看是否也更新了数据。

10、 Elasticsearch Docker环境下安装

(1)下载镜像

docker pull elasticsearch:5.6.8

(2)创建容器

docker run ‐di ‐‐name=tensquare_elasticsearch ‐p 9200:9200 ‐p 9300:9300  elasticsearch:5.6.8

(3)浏览器输入地址: http://192.168.xxx.xxx:9200/ 即可看到信息。

接下来在本地的dome中使用服务器端的 Elasticsearch,见下一篇:包含本地添加ES,服务器安装IK和HEAD(https://blog.csdn.net/qinian8/article/details/98220763)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值