记录ElasticSearch(es)

1 篇文章 0 订阅

记录ElasticSearch(es)

什么是ElasticSearch,ElasticSearch是一个开源大数据分布检索引擎,

说 到ElasticSearch 就需要说一下他的内部组成包,

Lucene 是一套信息检索工具包(就相当于我们想要写一个java的程序,需要安装一个jdk),不包含搜索引擎系统,包含的索引结构(二叉树,红黑数,Hashmap,B++,)读写索引的工具,排序,搜索规则…工具类,

ElasticSearch 是基于Lucene 实现的一些封装和增强的搜索引擎系统!!

ElasticSearch比较solr总结

1,es 是开箱即用(解压即可使用),solr 相对复杂一点,

2,solr利用zookeeper 进行进行分布式管理,而ES自带分布式协调管理功能,

3,solr 支持更多的数据格式,比如,json,XML,csy,txt, 而ES 只支持json 文件格式

4,solr 官方提供的功能更多,而ES 更加注重核心功能,高级功能需要第三方组件支持,例如高级图形界面需要kibana 友好支持~

5,solr 查询快,但是更新索引慢(即插入删除慢,),用于电商等查询多的应用,

**·**ES建立索引快(即查询慢),即时性查询快,用于fackbook 新浪等搜索

solr 是传统搜索应用的有力解决方案,但是ES更加实用于新兴(大数据时代)的实时搜索应用

6,solr 比较成熟,有一个更大,更成熟的用户,社区开发和贡献者环境,而ES 相对开发维护人员较少,更新条块,学习实用成本高。

ElasticSearch简介:

ElasticSearch是一个实时分布式搜索和分析引擎,它让数据以前所未有的速度处理大数据成为可能!!!

它是用于全文搜索,结构化搜索,分析,以及将三者混合使用;

ElasticSearch是一个基于Apache Lucene ™的开源搜索引擎,无论是在开源还是在专有领域,Lucene 都是被认为是迄今为止最为先进,性能最好,功能最全的搜索引擎库;

但是Lucene只是一个库,想要使用它,你必须使用java 来作为开发语言,并将其直接集成到你的项目中,

https://www.elastic.co/cn/downloads/elasticsearch

ElasticSearch也使用java 开发环境并使用lucene 来作为它的核心来实现所有索引和搜索的功能,但是他的目的是通过简单的RsetFul API 来隐藏Lucene 的复杂性,

Sorl 简介:

Solr 是Apache 下的一个顶级开源项目,采用java开发,基于Lucene开发的全文搜索服务器,solr 提供了比Lucene更加丰富的查询语言,同时实现了可配置,可扩展,并对索引,搜索性能进行了优化!!

Solr可以独立运行,运行在jetty ,tomact 等这些servlet 容器中,solr索引的实现方法很简单,用post 方法想solr 服务器发送一个描述field 及其内容的XML 文档,solr根据xml文档添加,修改,删除,更新索引,solr搜哦只需要发送HTTP GET 请求,然后对solr返回的xml,json ,等格式的查询结果进行解析,组织页面布局。solr不提供构建url 的功能。solr 提供一个管理页面,通过管理界面可有查询solr 的配置和运行情况.。

solr是基于Lucene开发的企业及搜索服务器,实际上就是封装了Lucene。

solr是一个独立的企业及搜索应用服务器,它对外提供类似于Web-service API 接口。用户可以同http请求,想搜哦引擎服务器提交一个格式的文件。生成索引;也可以提供提出查找请求,并得到返回结果!!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcRWj4yw-1621773246387)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305112721839.png)]

ElasticSearch 安装及其使用:

下载 ElasticSearch

1,下载 ElasticSearch

ES官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch

elk 华为云下载地址:https://mirrors.huaweicloud.com/logstash/

ELK 三剑客,都是开箱即用(解压就可以直接使用),前提需要满足在我们的电脑上安装了node.js 前端的环境!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XCkBN9F8-1621773246389)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305152942182.png)]

2,熟悉目录

bin  启动文件  .bat
config   配置文件 
       log4j2  日志配置文件
       jvm 虚拟机配置文件 
       elasticsearch.yml  ElasticSearch  配置 域名 9200   是否允许跨域  
lib       jar架包 
logs      日志文件
modules   功能模块
plugins   插件

3,点击bin 目录下的 .bat 文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-guahoMVl-1621773246391)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305153829660.png)]

4,打开9200的端口 ,访问测试

{
  "name" : "DESKTOP-0DFTEKM",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "uvrgvMq_RmOSTsLBjVzWAg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

安装 head 插件 可视化界面

1,官网下载地址: https://www.github.com/mobz/elasticsearch-head/

下载界面:

image-20210305155350743

2,下载完毕之后,如何使用,

可以使用git把github (gitee) 上的文件克隆 到本地, 然和 cd 打开我们的文件目录, npm install (下载插件,cnpm install 同理), npm run start 打开测试即可;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onQL8D2p-1621773246397)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305155235086.png)]

打开测试会发现下图,没有连接到集群:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tpX2wtGs-1621773246398)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305160455176.png)]出现这种情况,我们需要在ElasticSearch 配置文件中,允许跨域

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SOeyw9ER-1621773246399)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305160718419.png)]

http.cors.enabled: true
http.cors.allow-origin: "*"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YTyE5sDo-1621773246399)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305160846379.png)]

3,连接成功的效果图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6u16TfSI-1621773246400)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305161045826.png)]

我们初学者可以把ES 当成 是一个数据库,(可以建立索引== 库,文档 ==数据)

这个head 我们只作为数据显示的工具,后面的搜索查询数据,用kibana 查询

安装kibana

Kibana 是一个针对ElasticSearch 的开源分析及可视化平台,用来搜索 ,查询交互存储在ElasticSearch 索引(库),中的数据,使用kibana 可以通过各种的图表进行高级数据分析及展示。kibana 让海量数据更加容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表盘,[ (dashboard) ==类似 Hystrix 的检测 ] 实现显示ElasticSearch 查询动态,

官网:https://www.elastic.co.cn.kibana

注意:kibana 和es 需要保持版本一致;

下载完毕后解压打开 bin 文件 运行.bat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6D5YhSMt-1621773246400)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305164910551.png)]

效果图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxalEIjk-1621773246401)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210305164734336.png)]

4,开发工具的使用,(post,curl,head,kibana,谷歌浏览器插件测试, )

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vpS6i5tj-1621773246401)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307090415730.png)]

5,实现 kibana 页面国际化,

找到kibana 的配置文件, 下图中是存放汉化字体的文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3l6b66r-1621773246402)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307090518627.png)]

配置更改成:修改完配置文件需要重启!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rsuEtySl-1621773246402)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307090727093.png)]

启动kiabana 之前需要把我们的EleasticSearch 给启动号,不启动的话,他无法实现启动,还会警告你

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qQxU1mAK-1621773246403)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307091031767.png)]

ES的核心概念

概述

集群,节点,索引,类型,文档,分片, 映射 这些都是代表了什么意思 ???

eleasticsearch 是面向文档,关系行数据库和elasticsearch 客观对比;

Realtional DBElasticsearch
数据库 (data base )索引
表 (table )type 类型
行 (rows)documents 文档
字段( columns )fileds 一切都 是 json {}

elasticSearch (集群) 中含有多个 索引(数据库) 每个索引中国有可以包含多个的类型(表) 每个类型下面又含有多个的字段(列)

物理设计

elasticSearch 在后太把每个 的索引分成了多个 的分片 ,每个的分片可以在集群中 的不同服务器间迁徙, 一个人就是一个集群! 默认的集群名为 elasticSearch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BApd6iuy-1621773246403)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307093132558.png)]

1)Cluster:集群。

ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。

2)Node:节点

形成集群的每个服务器称为节点。

3)Shard:分片。

当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。
当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。

4)Replia:副本。

为提高查询吞吐量或实现高可用性,可以使用分片副本。
副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。
当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

5)全文检索。(索引)

全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token,这样当你搜索“你们” 或者 “激情” 都会把这句搜出来。

索引

就是数据库!!!

索引是映射类型的容器 ,elasticseach 文档集合,索引存储了映射类型字段和其他的设置然和他们被 存储到了各个 分支分片 上 。 我们来研究分片是如何工作的 !!!

物理设计 :节点和分片 是如何工作的

一个集群中至少有一个节点 而一个节点 就是一个elasric searcn 的进程 节点可以是 有多个索引默认的 ,如果你创建索引 ,那么索引将会有五个分片 构成 , 每一个主分片会有一个副本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nsUmdJTn-1621773246404)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307095202980.png)]

image-20210307095311586

上图 是一个有三个节点的集群,可以看得到 主分片 和对应的复制分片都会在不同的节点之下,这样有利于某一个节点挂掉了,数据也不会至于直接my,实际上一个分片就是一个 Lucene 索引,一个包含倒排索引的文件目录 ,倒排索引结果使得 ES 在不扫描全部文档 情况下,就可以告诉你 那些文档包含着特点的关键字, , 接下来我们看看什么是倒排索引 !!!

倒排索引

ES 使用的是一种称之为 倒排索引的 结构, 采用 的是 Luncene 倒排索引为底层结构 ,这种结构 适用有快速 的全文搜索 ,一个索引于文档中所有不重复的列表构成 ,对于每一个词,都有一个包含他的 文档列表 ,

图片来源地址:https://blog.csdn.net/csdnliuxin123524/article/details/91581209

img

​  图4 简单的倒排索引

上图中有的几个文档 ,倒排索引可以通过我们输入的一些关键字来

中文和英文等语言不同,单词之间没有明确分隔符号,所以首先要用分词系统将文档自动切分成单词序列。这样每个文档就转换为由单词序列构成的数据流,为了系统后续处理方便,需要对每个不同的单词赋予唯一的单词编号,同时记录下哪些文档包含这个单词,在如此处理结束后,我们可以得到最简单的倒排索引(参考图3-4)。在图4中,“单词ID”一栏记录了每个单词的单词编号,第二栏是对应的单词,第三栏即每个单词对应的倒排列表。比如单词“谷歌”,其单词编号为1,倒排列表为{1,2,3,4,5},说明文档集合中每个文档都包含了这个单词。

img

图4 简单的倒排索引

之所以说图4所示倒排索引是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词,而事实上,索引系统还可以记录除此之外的更多信息。图5是一个相对复杂些的倒排索引,与图4的基本索引系统比,在单词对应的倒排列表中不仅记录了文档编号,还记载了单词频率信息(TF),即这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子,所以将其记录在倒排列表中,以方便后续排序时进行分值计算。在图5的例子里,单词“创始人”的单词编号为7,对应的倒排列表内容为:(3:1),其中的3代表文档编号为3的文档包含这个单词,数字1代表词频信息,即这个单词在3号文档中只出现过1次,其它单词对应的倒排列表所代表含义与此相同。

img

图 5 带有单词频率信息的倒排索引

实用的倒排索引还可以记载更多的信息,图6所示索引系统除了记录文档编号和单词频率信息外,额外记载了两类信息,即每个单词对应的“文档频率信息”(对应图6的第三栏)以及在倒排列表中记录单词在某个文档出现的位置信息。

img

图6 带有单词频率、文档频率和出现位置信息的倒排索引

“文档频率信息”代表了在文档集合中有多少个文档包含某个单词,之所以要记录这个信息,其原因与单词频率信息一样,这个信息在搜索结果排序计算中是非常重要的一个因子。而单词在某个文档中出现的位置信息并非索引系统一定要记录的,在实际的索引系统里可以包含,也可以选择不包含这个信息,之所以如此,因为这个信息对于搜索系统来说并非必需的,位置信息只有在支持“短语查询”的时候才能够派上用场。

 以单词“拉斯”为例,其单词编号为8,文档频率为2,代表整个文档集合中有两个文档包含这个单词,对应的倒排列表为:{(3;1;<4>),(5;1;<4>)},其含义为在文档3和文档5出现过这个单词,单词频率都为1,单词“拉斯”在两个文档中的出现位置都是4,即文档中第四个单词是“拉斯”。

 图6所示倒排索引已经是一个非常完备的索引系统,实际搜索系统的索引结构基本如此,区别无非是采取哪些具体的数据结构来实现上述逻辑结构。

 有了这个索引系统,搜索引擎可以很方便地响应用户的查询,比如用户输入查询词“Facebook”,搜索系统查找倒排索引,从中可以读出包含这个单词的文档,这些文档就是提供给用户的搜索结果,而利用单词频率信息、文档频率信息即可以对这些候选搜索结果进行排序,计算文档和查询的相似性,按照相似性得分由高到低排序输出,此即为搜索系统的部分内部流程。

————————————————
版权声明:本文为CSDN博主「小宇plus」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdnliuxin123524/article/details/91581209

扩展:正向排序:https://blog.csdn.net/GarfieldEr007/article/details/50479074

IK分词器 插件

什么是IK 分词器??

分成: 即把一段中文或者别的划分为 一个一个的关键词 ,在我们搜索的时候会把之间的信息进行分词,会把数据库中或者索引库的数据进行分词,然后进行一个匹配操作,默认的中文分词是将一个字看成一个词,比如 我爱 ljm === “我”+ “爱” + “l" +“j”+”m“;

这显然是不符合要求的,所以我们需要使用IK 分词器来解决这个问题。 把一些不是常规词的词,加入到我们的“ 仓库 ” 中!!

IK分词器适用用于中文。

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

安装 IK 分词器

1,下载地址: https://github.com/medcl/elasticsearch-analysis-ik

2,下载完毕,把这个插件放置在ES 在的plugins 包下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zs0xCFXm-1621773246405)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307192417329.png)]

3,重启ES 在kibana 进行测试

  • 使用 ik_smart 最少切分 搜索结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eUkNdXxY-1621773246405)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307192715779.png)]

  • 使用 ik_max_word 最细颗粒划分 搜索结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-foQ1kYMA-1621773246406)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307192919845.png)]

比较尴尬的时,在开始使用的时候出现了这样的一个错误

{
  "error" : {
    "root_cause" : [
      {
        "type" : "json_parse_exception",
        "reason" : "Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@2100f5c0; line: 3, column: 4]"
      }
    ],
    "type" : "json_parse_exception",
    "reason" : "Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@2100f5c0; line: 3, column: 4]"
  },
  "status" : 400
}

400 状态码 , 上传的格式错误,产生错误的原因是忘记写一个逗号,但是没有提示,然后我关闭重启后,才有一个“ 逗号” 的提示;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cn5UQA8V-1621773246406)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307193317750.png)]

这其中还有一个问题出现:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lnsL9oH4-1621773246407)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307193619665.png)]当我输入一个自己组建的 ” 陌生 “ 词的时候,在使用最少切分的这个词也仍然是按一个一个词来,这样没有实现我想要的,这就需要我们在IK 分析器里面,自己把这个词给家进去!!!

在IK分词器插件的config 包下新建一个自己的扩建字典:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZMqUq1L-1621773246407)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307194157923.png)]

在配置中,把自己新建的扩展字段,加入到配置问文件中:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8iXHzVS-1621773246408)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307194444994.png)]

配置好,重启之后,在使用最少切分搜索得到一下结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FwbGX6et-1621773246408)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210307194836315.png)]

Rest 风格

一种软件架构的风格, 而不是标准,只是提供了一组设计原则和约束条件,(通过不同的命令来实现不同 的操作!!1);它主要用于客户端和服务器之间交互类的软件,基于这个风格设计的软件可以更加的简洁,更有层次,更易用实现缓存等机制!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FYmIR7At-1621773246409)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308083842864.png)]

基础 测试:

##新增一个简单的 索引(库)中的文档
PUT   /仓库名称/~类型~/ id  
{
json字段文档信息内容
}


POST /text02/_doc/3/
{
 "doc":{
  "name":"周杰伦",
  "age":"21",
  "brtind":"1997-03-29",
  "remack":["歌手","青年","z作家"]

 }
  
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TlpNoXGP-1621773246409)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308090349123.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RUWZn5Nd-1621773246410)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308101924248.png)]

###  设置索引config 
PUT  /仓库名称 
{
  "mappings": { ### mappings 映射规则
    "properties": {   ## 索引属性 设置  properties
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "brtind":{
        "type": "date"
      },
      "remack":{
        "type": "text"
      }
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yefhhOrW-1621773246410)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308091427034.png)]

修改索引中的文件:

强制替换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EuKPLUnB-1621773246411)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308091655274.png)]

使用修改语句 修改索引的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kACRRsA-1621773246412)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308092743868.png)]

查询显示某一个索引(库)中的索引文档:

GET /text02/_search
{
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZphHmNu-1621773246412)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308093014287.png)]

删除索引

依据DELECT 语句,根据你输入的语句来判断 ,你是需要删除一个索引,还是删除一个索引内部的某个文档!!!


###  删除的一个文档:
DELETE /text03/_doc/1/

#####删除的一个索引 
DELETE /text03/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ul63wJCt-1621773246413)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210308093736080.png)]

kibana 复杂查询

使用springboot 集成es

在IDEA 中新建一个springboot 项目, springboot版本为,

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.4</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

需要导入 fackjson ,lombok , elasticsearch 的maven 依赖

<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<!--fastJson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.46</version>
</dependency>
<!-- high client-->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${es.version}</version>

</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>${es.version}</version>
</dependency>

这里需要注意的是在springboot 版本中有一个默认的低版本的elasticsearch, 这里我们需要自己定义一个elasticsearch 的版本(elasticsearch 版本需要和自己电脑中的elasticsearch 版本一致);

第二步,创建一个 配置类,自己建一个高级的客户端来方便与我们来使用 elasticsearch 的api 接口;

 @Bean
 @Qualifier("elasticsearchClient")
    public RestHighLevelClient restHighLevelClient() {
    RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
            new HttpHost("127.0.0.1", 9200, "http")));
     return client;
}

第三步: 编译测试类

  @Autowired

  RestHighLevelClient restHighLevelClient;

//添加索引
  @Test
  public void add() throws IOException {
      CreateIndexRequest createIndexRequest = new CreateIndexRequest("Document");
      System.out.println(createIndexRequest);
      CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
      System.out.println(createIndexResponse);
  }

现在有一个问题:bug 测试 add(); 方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2i5NStQs-1621773246413)(C:\Users\刘\AppData\Roaming\Typora\typora-user-images\image-20210412201206323.png)]

定义的

@Configuration
public class RestHighLevelClientConfig {

    ///https://blog.csdn.net/admin741admin/article/details/107816451
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
                new HttpHost("127.0.0.1", 9200, "http")));
        return client;
    }



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值