前面讲述了什么是ES框架和为什么要用ES框架进行检索,现在开始尝试在windows下安装并简单使用ES框架
linux下部署:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_installation.html
一、安装
1.下载解压安装包
官网选择相应版本进行下载zip包,在英文路径下解压即可,这里我使用的是8.0.0版本
2.修改配置文件(可选)
(当然可以尝试直接进行3点击启动,以下是个人为了方便以及相关报错经验进行的修改)
修改图中yml文件,主要修改(或解除注释)以下字段(不同版本可能不一样,不过主要就是访问地址和安全验证的问题):
node.name: ES #自行设置的节点名字
network.host: localhost #可访问的地址
http.port: 8088 #避开使用中的端口
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
enabled: falsexpack.security.transport.ssl:
enabled: false#以上几个都是可选,但是这个ssl需要注意,将true改为false,否则当使用localhost:8088进行访问时会报错”在 https 通道上接收到明文 http 流量,关闭连接 Netty4HttpChannel”,而如果改成https://localhost:8088,则会证书不受信任等,所以我的解决方式是直接关掉ssl验证。
然后其他的security改为false都是为了不输入账号密码直接进行访问而设置的,因为这个还只是为了测试,没有安全性的要求,如果需要设置账号密码可以参考或自行搜索。
3.启动ES
修改完配置文件后,可以直接点击bin文件夹中的elasticsearch.bat文件,最终显示started即为成功
4.验证
(1)浏览器访问
浏览器直接访问localhost:8088
(2)curl访问(可选)
下载curl源码zip,解压后直接在命令行输入:curl http://localhost:8088/?pretty
(cURL 给你提供了一种将请求提交到 Elasticsearch 的便捷方式,并且安装 cURL 之后,你可以通过复制与粘贴去尝试书中的许多例子。)
这就意味着你现在已经启动并运行一个 Elasticsearch 节点了,你可以用它做实验了。 单个 节点 可以作为一个运行中的 Elasticsearch 的实例。 而一个 集群 是一组拥有相同 cluster.name
的节点, 他们能一起工作并共享数据,还提供容错与可伸缩性。(当然,一个单独的节点也可以组成一个集群) 你可以在 elasticsearch.yml
配置文件中 修改 cluster.name
,该文件会在节点启动时加载 (这个重启服务后才会生效)。
二、简单使用
1.方式
Java等语言客户端、web浏览器(Sense客户端)、curl命令
下面主要介绍发送http请求直接访问的方式
例:
统计集群文档个数:
curl -XGET "localhost:8088/_count?pretty"
查看集群健康状态:
curl -XGET http://localhost:8088/_cluster/health?pretty
(对应可使用接口测试软件发送请求或接收数据)
Red,表示有主分片没有分配,某些数据不可用。
Yellow,表示主分片都已分配,数据都可用,但是有复制分片没有分配。
Green,表示主分片和复制分片都已分配,一切正常。
(1)修改最高可占用磁盘空间
由于es安装在windows本地,因此其占用的是本地磁盘空间,在尝试创建索引时发现总是无法创建成功,提示主分片未激活等等,搜索思考后大概明白是为什么了:
由于是单节点,我也没有设置主节点,当本结点磁盘占用过高时,es尝试找到其他结点进行数据存储,就发现找不到其他结点了。(我安装在D盘,而D盘占用超过90%,默认高水位应该是90%)
解决:修改高水位值
PUT http://localhost:8088/_cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "85%",
"cluster.routing.allocation.disk.watermark.high": "98%",
"cluster.routing.allocation.disk.watermark.flood_stage": "99%",
"cluster.info.update.interval": "1m"
}
}
cluster.routing.allocation.disk.watermark.low:控制磁盘使用的低水位。默认为85%,意味着如果节点磁盘使用超过85%,则ES不允许在分配新的分片。当配置具体的大小如100MB时,表示如果磁盘空间小于100MB不允许分配分片。
cluster.routing.allocation.disk.watermark.high:控制磁盘使用的高水位。默认为90%,意味着如果磁盘空间使用高于90%时,ES将尝试分配分片到其他节点。
(2)创建文本(megacorp为索引名称,_create为类型名称)
将文本添加后会为其创建索引
PUT http://localhost:8088/megacorp/_create/1
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
增加更多的员工信息到目录中(注意修改路径上的id,然后自行添加or参考文档)
(3)查看索引(类型为_doc)
GET http://localhost:8088/megacorp/_doc/3
将 HTTP 命令由
PUT
改为GET
可以用来检索文档,同样的,可以使用DELETE
命令来删除文档,以及使用HEAD
指令来检查文档是否存在。如果想更新已存在的文档,只需再次PUT
。
(4)查看所有雇员
GET http://localhost:8088/megacorp/_search
可以看到,我们仍然使用索引库 megacorp
,但与指定一个文档 ID 不同,这次使用 _search
。返回结果包括了所有三个文档,放在数组 hits
中。一个搜索默认返回十条结果。
剩下的可以参照官方文档教程,写的还是很详细的,大概格式就是以上,由于版本比较老,一些地方会不一样(比如ES7.4后不再支持自定义索引类型),基本修改上面都有了,主要是类型不能自定义employee了。后续会发布Java API的相关操作。