总结前言:
因为最近项目开发有用到ElasticSearch,之前在去年年底也在技术交流研讨会上听过这个技术,其实听过很多次,但是每次都没有关注,直到现在用到了,就在这做一个总结,也是写一下学习成果,总结会有不完整的地方,以后自己会及时更新.
:用到的工具提取地址
链接:https://pan.baidu.com/s/1Efdv4Xyn-W6Rj6WYZ5s1fg
提取码:si2w

1,ElasticSearch简介(网上扒下来得定义可以大概看一下,自己感觉会用比较重要)
Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速 度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分 布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发 的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用 于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
1.2 ElasticSearch体系结构
为了说明体系结构更通俗易懂用对比mysql数据库图表示
ElasticSearch---------------Mysql
索引(index) -----------------数据库(databases)
类型(type) -------------------表(table)
文档(document) -------------行(row)
:也准备用文字在叙述一遍:
 索引(index)
Elasticsearch里的索引概念是名词而不是动词,在elasticsearch里它支持多个索引。有点类似于关系数据库里面每一个服务器可以支持多个数据库是一个道理,在每一索引下面又可以支持多种类型,这又类似于关系数据库里面的一个数据库可以有多张表一样。但是本质上和关系数据库还是有很大的区别,我们这里暂时可以这么理解。

 映射(mapping)
在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本

 文档类型(type)
在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序
可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象

 文档(document)
存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文
档相当于数据库表中的一行记录。
2 ElasticSearch部署与启动
2.1 Windows系统下的安装
找到安装包,解压到本地磁盘,双击执行elasticsearch.bat文件/或者通过dos命令进入该目录下执行,执行完会有访问地址

以下说明要自己注意,之前不知道,这块可能会有犯错.
http端口:9200,通过restApi进行相关操作
tcp端口:9300,通过提供javaAPI进行相关操作

2.2 Postman进行调用RestAPI进行测试
1、 使用PUT方式提交创建索引
2、 使用POST方式创建文档,自动创建映射
3、 根据文档类型查询所有数据get方式
4、 修改文档,如果文档ID存在会更新,如果没有则会新增文档数据put方式
5、 根据文档id查询,当新增文档数据如果没有指定“_id”字段,es则会自动新增
6、 模糊查询(*)
7、 删除文档:根据文档ID删除delete方式

3.ESHead插件安装&使用
1、 将云盘中提供提供的head插件压缩包解压到本地磁盘,跟elasticSearch目录区分开
2、 安装node.js运行环境;
下载对应你系统的Node.js版本:https://nodejs.org/en/download/
3.测试
在命令提示符下输入命令 : node ‐v
3、 安装grunt构建工具,将来使用grunt运行head插件
4、 进入解压head根目录,执行命令:cnpm install
5、 在head插件目录执行命令:grunt server启动head插件
6、 修改es配置文件,允许跨域访问,重启elasticSearch(不设置跨域是不能访问到ES的,所以在写代码的时候一定要注意跨域注解的使用)
http.cors.enabled: true #允许跨域访问
http.cors.allow-origin: “*” #指定允许访问的ip,*代表所有ip均可访问
配置文件直接打开,我是直接把上两句话粘贴到前两行了.

4 iK分词器配置
ElasticSearch 默认采用分词器, 单个字分词
4.1 windows下安装
1.将资料中的iK分词器安装包解压命名为ik(不命名也可),将ik文件夹拷贝到ES/ plugins/中
2.启动ES服务器发现ik分词器被加载
4.2 Ik分词器测试
IK提供了两个分词算法ik_smart 和 ik_max_word
其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
可以分别试一下看看效果,因为没有切图,所以不贴了.主要是最小词分和词组分
4.3 自定义词库(我今天试了几次都没有安装成功,没有找到原因,找到后会及时更新,应该安装很简单的)
1)进入容器
docker exec ‐it tensquareES /bin/bash
2)进入/usr/share/elasticsearch/plugins/ik/config目录
3)新建一个my.dic文件,编辑内容:

自己的目录:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">my.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>D:\software_tool\Myelasticsearch\ela5.6.8\elasticsearch-5.6.8\plugins\ik\config\my.dic

项目代码之后会上传github地址,主要的思想就是把数据库的里的数据同步到es搜索服务当中,存的时候会有关键字,在搜索的时候也会按照按关键字查询

5 elasticSearch与MySQL数据同步
5.1 logstash介绍
Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。
5.2 logstash安装测试
1、 找到logstash安装包,解压到本地磁盘
2、 通过dos窗口进入bin目录

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

3、 参数详解

stdin,表示输入流,指从键盘输入
stdout,表示输出流,指从显示器输出
命令行参数:
-e 执行
--config 或 -f 配置文件,后跟参数类型可以是一个字符串的配置或全路径文件名或全路径
路径(如:/etc/logstash.d/,logstash会自动读取/etc/logstash.d/目录下所有*.conf 的文
本文件,然后在自己内存里拼接成一个完整的大配置文件再去执行)

5.3 Mysql数据导入Elasticsearch
1、 在logstash目录下创建任意名称文件夹: mysqletc
2、 在文件夹mysqletc下创建文件mysql.conf 名称任意
3、 拷贝mysql驱动包到mysqletc文件夹下

input {jdbc {# mysql jdbc connection string to our backup databse 后面的test对应mysql中的test数据库jdbc_connection_string =>"jdbc:mysql://192.168.89.140:3306/tensquare_article?characterEncoding=UTF8"# the user we wish to excute our statement asjdbc_user => "root"jdbc_password => "123456"# the path to our downloaded jdbc driverjdbc_driver_library => "H:/dev_tools/es5.6.8/logstash-5.6.8/mysqletc/mysql-connector-java-5.1.22-bin.jar"# the name of the driver class for mysqljdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_paging_enabled => "true"jdbc_page_size => "50000"#以下对应着要执行的sql的绝对路径。statement => "select id,title,content from tb_article"#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)schedule => "* * * * *"}
}output {elasticsearch { #ESIP地址与端口hosts => "localhost:9200"#ES索引名称(自己定义的)index => "tensquare"#自增ID编号document_id => "%{id}"document_type => "article"} stdout {#以JSON格式输出codec => json_lines}
}

4、 执行命令

logstash -f ../mysqletc/mysql.conf

5、 观察控制台输出,每间隔1分钟就执行一次sql查询。

分布式搜索引擎ElasticSearch相关推荐

  1. 分布式搜索引擎ElasticSearch(四) -- 插件使用

    2019独角兽企业重金招聘Python工程师标准>>> 分布式搜索引擎ElasticSearch(四) -- 插件使用 博客分类: 搜索引擎,爬虫 首先 非常感谢国内大神 - Med ...

  2. 分布式搜索引擎-ElasticSearch(上集)

    个人简介 作者是一个来自河源的大三在校生,以下笔记都是作者自学之路的一些浅薄经验,如有错误请指正,将来会不断的完善笔记,帮助更多的Java爱好者入门. 文章目录 个人简介 分布式搜索引擎-Elasti ...

  3. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游

    分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...

  4. SpringBoot2.x集成分布式搜索引擎Elasticsearch

    参考资料: https://my.oschina.net/uwith/blog/3226665 https://www.freesion.com/article/8399663484/ https:/ ...

  5. ElasticSearch logo 分布式搜索引擎 ElasticSearch

    原文来自:http://www.oschina.net/p/elasticsearch Elastic Search 是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中 ...

  6. 分布式搜索引擎ElasticSearch之高级运用(三)

    一.倒排索引原理 ES采用的是倒排索引(Inverted Index), 也称为反向索引. 有反向索引,也会有正向索引. 正向索引 正排索引是以文档的ID作为关键字,并且记录文档中每个字段的值信息,通 ...

  7. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)

    在安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,要下载license.Marvel-agent,又要下载安装Kibana 版本需求 Java 7 or later Elasticsear ...

  8. 分布式搜索引擎ElasticSearch(二)---ElasticSearch进阶使用教程

    ElasticSearch ElasticSearch进阶教程 文档批量操作 批量获取文档数据 批量操作文档数据 DSL语言高级查询 无条件查询 有查询条件 叶子条件查询(单字段查询条件) 组合条件查 ...

  9. 分布式搜索引擎Elasticsearch(一):Elasticsearch命令

    前言:本文为原创 若有错误欢迎评论! linux安装elasticsearch6.5.4与windows下的kibana 请参考我的博客https://blog.csdn.net/weixin_439 ...

最新文章

  1. day38 19-Spring整合web开发
  2. youcans 的 OpenCV 学习课—2.图像读取与显示
  3. 为什么微型芯片是机器学习的命门?
  4. magento2 后台Grid点击column进行排序时会出现单个重复record
  5. Direct3D的初始化
  6. matlab中boxplot函数的参数设置_Matlab箱形图boxplot函数用法
  7. dnf无限卡连接服务器,不用进DNF游戏也能修改所在频道方法 卡频福音
  8. jq css3实现跑马灯+大转盘
  9. 利用微信机器人 自动发送验证码
  10. 平时你都用什么软件做笔记?
  11. thymeleaf内嵌变量
  12. [报错] TypeError: run() argument after * must be an iterable, not int
  13. 2.2 线性微分方程与常数变易法
  14. TouchGFX- 1 - 简介与安装
  15. 4g物联网卡融合智能领域构建物联网生态大网
  16. android 滑轮,android 滑轮多选
  17. 【项目】Thinkphp5.1制作博客CMS
  18. 菜鸟了解点“调查取证套路”刀在你我手
  19. 支付平台延时轮询/通知机制
  20. 374. 猜数字大小

热门文章

  1. ctf pwn基础-2
  2. 关于三维模型从HFSS中导出的问题
  3. 线上线下结合模式将成为教育行业的主流模式
  4. 前端js之JavaScript
  5. 在图片上添加文字和图片
  6. mysql要求cpu主频还是核数_CPU主频和核数哪个重要?买CPU是选多核还是高主频? (全文)...
  7. 2023计算机毕业设计SSM最新选题之java丢失宠物发布找寻平台7nk4i
  8. java制作简单日历
  9. 如何修改服务器root密码,服务器root密码修改
  10. ffplay用法大全