前面讲述了什么是ES框架和为什么要用ES框架进行检索,现在开始尝试在windows下安装并简单使用ES框架

参考:官方文档中文版英文版

linux下部署:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_installation.html


一、安装

1.下载解压安装包

官网选择相应版本进行下载zip包,在英文路径下解压即可,这里我使用的是8.0.0版本

第三方框架es es 框架_第三方框架es


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: false

xpack.security.transport.ssl:
   enabled: false

#以上几个都是可选,但是这个ssl需要注意,将true改为false,否则当使用localhost:8088进行访问时会报错”在 https 通道上接收到明文 http 流量,关闭连接 Netty4HttpChannel”,而如果改成https://localhost:8088,则会证书不受信任等,所以我的解决方式是直接关掉ssl验证。

然后其他的security改为false都是为了不输入账号密码直接进行访问而设置的,因为这个还只是为了测试,没有安全性的要求,如果需要设置账号密码可以参考或自行搜索。

第三方框架es es 框架_第三方框架es_02

第三方框架es es 框架_结点_03


3.启动ES

修改完配置文件后,可以直接点击bin文件夹中的elasticsearch.bat文件,最终显示started即为成功

第三方框架es es 框架_搜索_04


4.验证

(1)浏览器访问

浏览器直接访问localhost:8088

第三方框架es es 框架_elasticsearch_05


(2)curl访问(可选)

下载curl源码zip,解压后直接在命令行输入:curl http://localhost:8088/?pretty

(cURL 给你提供了一种将请求提交到 Elasticsearch 的便捷方式,并且安装 cURL 之后,你可以通过复制与粘贴去尝试书中的许多例子。)

第三方框架es es 框架_搜索_06

第三方框架es es 框架_搜索_07

这就意味着你现在已经启动并运行一个 Elasticsearch 节点了,你可以用它做实验了。 单个 节点 可以作为一个运行中的 Elasticsearch 的实例。 而一个 集群 是一组拥有相同 cluster.name 的节点, 他们能一起工作并共享数据,还提供容错与可伸缩性。(当然,一个单独的节点也可以组成一个集群) 你可以在 elasticsearch.yml 配置文件中 修改 cluster.name ,该文件会在节点启动时加载 (这个重启服务后才会生效)。



二、简单使用

1.方式

Java等语言客户端、web浏览器(Sense客户端)、curl命令

下面主要介绍发送http请求直接访问的方式

例:

统计集群文档个数:

curl -XGET "localhost:8088/_count?pretty"

第三方框架es es 框架_第三方框架es_08

查看集群健康状态:

curl -XGET http://localhost:8088/_cluster/health?pretty

第三方框架es es 框架_结点_09

(对应可使用接口测试软件发送请求或接收数据)

第三方框架es es 框架_第三方框架es_10

Red,表示有主分片没有分配,某些数据不可用。



Yellow,表示主分片都已分配,数据都可用,但是有复制分片没有分配。

Green,表示主分片和复制分片都已分配,一切正常。


2.示例

(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将尝试分配分片到其他节点。

第三方框架es es 框架_第三方框架es_11


(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" ]
}

第三方框架es es 框架_结点_12

增加更多的员工信息到目录中(注意修改路径上的id,然后自行添加or参考文档

第三方框架es es 框架_第三方框架es_13


(3)查看索引(类型为_doc)

GET http://localhost:8088/megacorp/_doc/3

第三方框架es es 框架_第三方框架es_14

将 HTTP 命令由 PUT 改为 GET 可以用来检索文档,同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT


(4)查看所有雇员

GET http://localhost:8088/megacorp/_search

第三方框架es es 框架_第三方框架es_15

可以看到,我们仍然使用索引库 megacorp ,但与指定一个文档 ID 不同,这次使用 _search 。返回结果包括了所有三个文档,放在数组 hits 中。一个搜索默认返回十条结果。


剩下的可以参照官方文档教程,写的还是很详细的,大概格式就是以上,由于版本比较老,一些地方会不一样(比如ES7.4后不再支持自定义索引类型),基本修改上面都有了,主要是类型不能自定义employee了。后续会发布Java API的相关操作。

第三方框架es es 框架_第三方框架es_16

第三方框架es es 框架_elasticsearch_17