前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

ElasticSearch入门一:入门安装和索引基本操作

qiguaw 2024-09-26 16:37:28 资源文章 24 ℃ 0 评论

一、概述

ElasticSearch是Elastic Stack(Elasticsearch、Kibana、Beats 和 Logstash)中的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

像Github、维基百科、Sound Cloud、Stack Overflow、百度、新浪、阿里等国内外大厂都在使用Elastic Search。

一、ElasticSearch下载安装

1.1 下载

Elastic Stack的中文官网:www.elastic.co/cn。写本文时最新的版本是7.15.1,但是本文中使用的是7.8.0。

Windows下:

Linux:

tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz
复制代码

linux下安装的注意事项:

1、不能使用root用户运行ElasticSearch,解决如下,新建一个用户

adduser elasticsearch
passwd elasticsearch
chown -R elasticsearch elasticsearch-7.8.0
chgrp -R elasticsearch
复制代码

2、运行报错:max number of threads [3883] for user [elasticsearch] is too low, increase to at least [4096]。解决:

vim /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 5000 
* hard nproc 5000 
root soft nproc 5000 
root hard nproc 5000

vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p

reboot # 重启服务器
复制代码

其他的一些问题:

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

设置JVM初始内存为1G。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。设置JVM最大可用内存为1G

-Xms1g -Xmx1g

ElasticSearch目录说明:

目录

说明

bin

可执行脚本目录

config

配置目录

jdk

内置JDK目录

lib

类库

logs

日志目录

modules

模块目录

plugins

插件目录

1.2 运行ElasticSearch

进入bin目录

Windows:双击运行elasticSearch.bat

Linux:./elasticSearch 运行

在浏览器中访问ElasticSearch所在服务器的9200端口,如下:

{
"name": "DESKTOP-ILEN9BL",
"cluster_name": "elasticsearch",
"cluster_uuid": "i_-OifhxTm2brH0U2ojwjQ",
"version": {
"number": "7.8.0",
"build_flavor": "default",
"build_type": "zip",
"build_hash": "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date": "2020-06-14T19:35:50.234439Z",
"build_snapshot": false,
"lucene_version": "8.5.1",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}
复制代码

二、ElasticSearch操作

1.1 RESTful风格

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在 REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。

可以安装用的比较多的一个软件Postman来使用REST操作ElasticSearch,这里不多赘述关于Postman的安装了。下载地址:www.getpostman.com/apps

ElasticSearch里面的数据格式

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。很多人为了方便记忆Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比。毕竟大部分的人都是从传统的关系※数据库学到NoSQL的。

ElasticSearch里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Types的概念已经被逐渐弱化,Elasticsearch 6.X中,一个index下已经只能包含一个type,Elasticsearch 7.X中, Type的概念已经被删除了。

ElasticSearch中索引的CRUD

1、创建索引 如果创建的索引名称已经存在那么会返回错误信息。

PUT http://127.0.0.1:9200/shopping

# 返回结果
{

    "acknowledged": true, # true操作成功

    "shards_acknowledged": true, # 分片操作成功

    "index": "shopping"   # 索引名称

}
复制代码

2、查看索引

查看全部:返回的结果像是一个表格

http://127.0.0.1:9200/_cat/indices?v
复制代码

字段说明:

表头

含义

health

当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)

status

索引打开、关闭状态

index

索引名

uuid

索引统一编号

pri

主分片数量

rep

副本数量

docs.count

可用文档数量

docs.deleted

文档删除状态(逻辑删除)

store.size

主分片和副分片整体占空间大小

pri.store.size

主分片占空间大小

查看单个索引:与上述的创建索引请求的路径一样,GET是读取操作。

GET http://127.0.0.1:9200/shopping
复制代码

返回结果:

{
    # 索引名称
    "shopping": {      
        # 别名
        "aliases": {},
        # 映射
        "mappings": {},
        # 设置
        "settings": {
            # 索引
            "index": {
                # 创建时间
                "creation_date": "1614265373911",
                # 主分片数量
                "number_of_shards": "1",
                # 副分片数量
                "number_of_replicas": "1",
                # uuid 唯一标识
                "uuid": "eI5wemRERTumxGCc1bAk2A",
                # 当前索引的版本,每一次修改,版本会随着改变
                "version": {
                    "created": "7080099"
                },
                # 缩影名称
                "provided_name": "shopping"
            }
        }
    }
}
复制代码

3、删除索引 删除操作时DELETE请求

DELETE http://127.0.0.1:9200/shopping
复制代码

当索引存在时,删除成功返回:

{
    "acknowledged": true
}
···

当删除不存在的索引时,会返回异常信息。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表