2.1、Elasticsearch 安装

下载软件:

image.png
Elasticsearch 分为 Linux 和 Windows 版本,基于我们主要学习的是 Elasticsearch 的 Java 客户端的使用。
image.png

安装软件:

  1. Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,解压后的 Elasticsearch 的 目录结构如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1288078/1627969556075-cb15ce38-24a2-49c6-8a97-bc5afe6ff261.png#clientId=u3aa87885-ba70-4&from=paste&height=255&id=ub10d8ccb&margin=%5Bobject%20Object%5D&name=image.png&originHeight=255&originWidth=1069&originalType=binary&ratio=1&size=76758&status=done&style=none&taskId=ud4f9f3a8-9a2d-4cf3-9bcb-2081cca27eb&width=1069)<br />Linux 版的 Elasticsearch 的安装很简单,解压即安装完毕,解压后的 Elasticsearch 的 目录结构如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1288078/1627972230971-6f69926f-9d6a-44d0-805b-d704d94a0d55.png#clientId=u3aa87885-ba70-4&from=paste&height=250&id=ua6fa94a3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=250&originWidth=870&originalType=binary&ratio=1&size=36161&status=done&style=none&taskId=u936b2229-811e-4d5c-acf9-f984a548e45&width=870)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1288078/1627969581894-1379595f-e228-4dc7-b7f0-ce7ebd722c02.png#clientId=u3aa87885-ba70-4&from=paste&height=519&id=ub769158b&margin=%5Bobject%20Object%5D&name=image.png&originHeight=519&originWidth=1131&originalType=binary&ratio=1&size=52797&status=done&style=none&taskId=ua0d78958-df73-4ab5-a25e-c815ee8b910&width=1131)<br />Windows 版的解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务 <br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1288078/1627974412123-b2011a6f-13eb-43de-801b-5ea43b6d459b.png#clientId=u3aa87885-ba70-4&from=paste&height=890&id=u02e7a850&margin=%5Bobject%20Object%5D&name=image.png&originHeight=890&originWidth=1570&originalType=binary&ratio=1&size=202846&status=done&style=none&taskId=u1e7e5e21-c446-4253-8ab6-902e6fb36c0&width=1570)<br />Linux 版的解压后,进入 bin 文件目录,执行./elasticsearch 文件启动 ES 服务 <br /> **注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。 **<br /> 打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200,测试结果<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1288078/1627974549037-541e5cef-f0bc-4f50-b3d8-e0edb7e84283.png#clientId=u3aa87885-ba70-4&from=paste&height=304&id=u0af8c3b0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=304&originWidth=1124&originalType=binary&ratio=1&size=19986&status=done&style=none&taskId=u5b769826-96b7-45c9-a845-ce90b9feae6&width=1124)

问题解决:

  • Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,默认安装包带有 jdk 环境,如果系统配置 JAVA_HOME,那么使用系统默认的 JDK,如果没有配置使用自带的 JDK,一般建议使用系统配置的 JDK。
  • 双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/jvm.options 配置文件

    1. # 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
    2. # Xms represents the initial size of total heap space
    3. # 设置 JVM 最大可用内存为 1G
    4. # Xmx represents the maximum size of total heap space
    5. -Xms1g
    6. -Xmx1g
  • Linux环境,Elasticsearch不能以root权限来运行,会出现这种错误:Exception in thread “main” java.lang.RuntimeException: don’t run elasticsearch as root。因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户解决办法:

    1. liunx创建新用户 adduser XXX 然后给创建的用户加密码 passwd XXX 输入两次密码。
    2. 切换刚才创建的用户 su XXX 然后执行elasticsearch 会显示Permission denied 权限不足。
    3. 给新建的XXX赋权限,chmod 777 * 这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
    4. root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
  • Linux环境,提示:Max number of threads for elasticsearch too low.解决办法:
    1. 修改/etc/security/limits.conf
    2. vim /etc/security/limits.conf
    3. 添加一行:xxx - nproc 2048
    4. 其中”xxx”为启动elasticsearch的用户
  • 提示:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536].解决办法:

    1. 修改/etc/sysctl.conf
    2. vim /etc/sysctl.conf
    3. 添加一行:vm.max_map_count=262144,添加完了执行:sysctl -p,看结果是不是vm.max_map_count = 262144

      2.2、 RESTful

      REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
      在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。
      在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。

      2.3、Postman客户端安装

      如果直接通过浏览器向 Elasticsearch 服务器发请求,那么需要在发送的请求中包含HTTP 标准的方法,而 HTTP 的大部分特性且仅支持 GET 和 POST 方法。所以为了能方便地进行客户端的访问,可以使用 Postman 软件
      Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送任何类型的 HTTP 请求 (GET, HEAD, POST, PUT..),不仅能够表单提交,且可以附带任意类型请求体。
  • Postman 官网:https://www.getpostman.com

  • Postman 下载:https://www.getpostman.com/apps

image.png

2.4、数据格式

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比
image.png
ES 里的 Index 可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。
这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个type,Elasticsearch 7.X 中, Type 的概念已经被删除了。

  • 用 JSON 作为文档序列化的格式,比如一条用户信息:
    1. {
    2. "name" : "John",
    3. "sex" : "Male",
    4. "age" : 25,
    5. "birthDate": "1990/05/01",
    6. "about" : "I love to go rock climbing",
    7. "interests": [ "sports", "music" ]
    8. }