Mac 下安装使用 Elasticsearch+head+ik插件

在做问题回答实验的时候,用到Elasticsearch(ES),需要根据问题句中的关键词从近千片候选文档中检索出相关度最高的文档,考虑到将文档进行倒排索引,如ES搜索思路如出一辙。

1、安装ES
1.1、官网下载 http://www.elastic.co,点击免费使用选取适合自己的电脑的版本下载(试过特别慢,还容易停止下载)
Mac 下安装使用 Elasticsearch+head+ik插件_第1张图片
改进:搜索找到一个链接下载超级快Mac版本 Darwin

1.2、解压 直接解压 或者 终端输入命令解压: tar -vxf elasticsearch-7.6.1.tar
1.3、进入目录:cd elasticsearch-7.6.1
1.4、启动ES
启动之前查看jdk版本:java -version (确保jdk为1.8版本)
启动elasticsearch命令:./bin/elasticsearch
出现starting与started表示启动成功,出现127.0.0.1:9200表示默认监听端口9200
注:浏览器验证ElasticSearch是否启动,输入请求:
Mac 下安装使用 Elasticsearch+head+ik插件_第2张图片
2、安装插件
此插件提供有好的界面,实现基本信息的查看,rest请求的模拟,数据的检索
2.1 在GitHub上寻找head插件:输入网址:https://github.com
搜索 elasticsearch-head
2.2 点击下载elasticsearch-head : (页面地址:https://github.com/mobz/elasticsearch-head)当然也可以在终端使用命令下载
2.3 关闭之前启动的elasticsearch服务 Mac终端:Ctrl + c
2.4 点击解压(或者Mac终端直接输入命令: unzip elasticsearch-head-master.zip)

	****3、启动插件****
	  3.1  进入插件目录并查看:cd elasticsearch-head-master
  	  3.2 检查node环境,输入命令:node -v
  	  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200412165244198.png)
  	  3.3  启动插件(npm是node的包的安装工具,npm的全称是Node Package Manager,是Nodejs的包管理器。)输入命令: npm run start
  	         第一次使用没有安装npm,运行时总是报错,而且搜索了无数博客,一一对照尝试后,总是解决了一个问题又出现新的,最后安装grunt后成功启动插件,[参考](https://www.cnblogs.com/front-end-1149980941/archive/2017/01/12/6275770.html)                   插件已在9100端口上启动成功
  	    3.4  .在浏览器中输入请求:http://localhost:9100 ,此时ElasticSearch 为可视化web界面
  	              此时 集群状态值为未连接状态,由于是刚把ElasticSearch服务停掉了,此时先把head插件也停掉: Ctrl + c
  	              由于head插件与ElasticSearch是两个独立的进程,它们之间的访问有跨域问题,则对ElasticSearch的配置进行相应的修改
  	              修改 elasticsearch.yml 文件,输入命令:vim config/elasticsearch.yml
  	              在文档的最末端加入

					http.cors.enabled: true
					http.cors.allow-origin: "*"
					按 Esc  输入       :wq!  保存退出
		4、启动ES+head 
		     4.1 此时后台启动ElasticSearch,输入命令 :./bin/elasticsearch -d
		     4.2 再次开启head插件,在elasticsearch-head-master目录下, 输入命令: npm run start
		     ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200412171228243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zvb2xpc2hfYm95Mg==,size_16,color_FFFFFF,t_70)

注:查看进程和删除重启:
1、查看进程
ps -ef | grep elastic
2、杀掉相应进程
kill -9 23222(相应的Elastic进程号)
3、重启
bin/elasticsearch -d

4、基于HTTP协议,以JSON为数据交互格式的RESTful API
命令行插入数据检索文档:
1、执行HTTP GET请求并指出文档的“地址”——索引、类型和ID
命令行查看数据

2、查询字搜索
我们搜索姓氏中包含“Smith”的员工
Mac 下安装使用 Elasticsearch+head+ik插件_第3张图片
或者通过head在网页上进行操作:
Mac 下安装使用 Elasticsearch+head+ik插件_第4张图片
3、使用SDL语句查询
构造更加强大、复杂的模型
DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。我们可以这样表示之前关于“Smith”的查询:

get /megacorp/employee/_search
{
	"query":{
			"match":{
				"last_name":"Smith"	
			}
		}
}

  	    我们不再使用查询字符串(query string)做为参数,而是使用请求体代替。这个请求体使用JSON表示,其中使用了match语句(查询类型之一)。
  	    也可以在网页上实现:
  	    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200414150337971.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zvb2xpc2hfYm95Mg==,size_16,color_FFFFFF,t_70)    

更复杂一些,我们依旧想要找到姓氏为“Smith”的员工,但是我们只想得到年龄大于30岁的员工。我们的语句将添加过滤器(filter),它使得我们高效率的执行一个结构化搜索:

Mac 下安装使用 Elasticsearch+head+ik插件_第5张图片
按照教程,应该是过滤筛选,不知为啥是联合检索,且的关系变为了或,还没找到原因。
后续采用基本查询就可以了,功能齐全。
Mac 下安装使用 Elasticsearch+head+ik插件_第6张图片

4、全文搜索
上述都是在以类型为key-word的字词搜索,下面是在文章中搜索,根据问题与通篇text的相关性评分给出检索后的text
GET /megacorp/employee/_search
{
“query” : {
“match” : {
“about” : “go shopping"
}
}
}

最后的最后,在实现GitHub上下载的代码时,出现如下错误

连接错误
请教了原作者,优秀的人一眼看出我没启动ES,启动后,显示新的问题
在这里插入图片描述
同样,一针见血,指出没有安装中文分词插件ik, 在CSDN上查找了多种讲解安装教程,总是出现各式各样的问题,最后,找到适合的最简安装:
GitHub源码下载,

找到与自己Elasticsearch版本一致的压缩文件,下载,并解压
将解压后的文件夹改名为ik放置 ./yourES/plugins (亲试,不能把压缩包放在该目录下,否则启动不了ES)

最后,再次启动ES,就可以运行分词功能啦

你可能感兴趣的:(Mac 下安装使用 Elasticsearch+head+ik插件)