Elasticsearch使用教程

2023-11-15

下载ES

  • elasticsearch的下载地址:https://www.elastic.co/cn/downloads/elasticsearch
  • ik分词器的下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
  • kibana可视化工具下载地址:https://www.elastic.co/cn/downloads/kibana

注:由于es和jdk是一个强依赖的关系,所以当我们在新版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的Linux中已经安装了jdk之后,就会发现启动es的时候优先去找的是Linux中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行。

如果Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错。
安装es8之前版本装需要JDK8及以上版本,安装es8版本则需要JDK17。

ES安装及启动

  1. 下载es后,完成解压。
  2. 双击bin目录下的【elasticsearch.bat】即可启动es,默认启动后占用9200端口
  3. 通过 http://127.0.0.1:9200/ 访问
  4. 安装ik分词器
    在 es 目录中的 \plugins 目录下新建 ik 目录,然后将下载完成的 elasticsearch-analysis-ik 解压至此目录下。
    完成后重启es,即可应用ik分词器。
  5. 安装可视化工具kibana 下载解压kibana,可通过修改kibana中config目录下的kibana.yml文件,配置你的es地址:
    即:elasticsearch.url: “http://127.0.0.1:9200”
  6. 在kibana的bin目录下,双击kibana.bat,启动Kibana。通过浏览器访问 http://127.0.0.1:5601/app/kibana#/dev_tools/ 即可使用kibana访问es,进行后续的API测试。

使用docker安装ES

拉取镜像

docker pull elasticsearch:7.7.0

docker pull kibana:7.7.0

启动镜像

docker run --name elasticsearch -d -e ES_JAVA_OPTS=“-Xms512m -Xmx512m” -e “discovery.type=single-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.io/kibana:7.7.0

访问

访问http:ip:9200 回车后得到一串es配置数据,则es配置成功

访问http://ip:5601 可以正常进入Kibana,说明kibana容器启动成功。

集群配置

虚拟机的话先关防火墙
systemctl stop firewalld
systemctl disable firewalld
设置内核参数:/etc/sysctl.conf
vm.max_map_count=655360   #sysctl -p 重启生效
创建ES配置文件:

mkdir -p /data/elasticsearch/{data,logs,config,plugins}
chmod -R 777 /data/elasticsearch/data
chmod -R 777 /data/elasticsearch/logs
vi /data/elasticsearch/config/elasticsearch.yml

#跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
#集群名称
cluster.name: elasticsearch-cluster
#节点名称
node.name: node-1
#是不是有资格竞选主节点
node.master: true
#是否存储数据
node.data: true
#最大集群节点数
node.max_local_storage_nodes: 3
#网络地址
network.host: 0.0.0.0
#设置其他节点与该节点交互的IP地址
network.publish_host: 192.168.3.90
#端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.3.90","192.168.3.91","192.168.3.92"]
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

启动容器

docker run -d --name=elasticsearch   --restart=always   -p 9200:9200 -p 9300:9300   -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /data/elasticsearch/data:/usr/share/elasticsearch/data   -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs   -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins  elasticsearch:7.7.0

#运行kibana 注意IP改成你自己的
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.3.90:9200 -p 5601:5601 -d kibana:7.7.0
  • -p 9200:9200端口映射:前表示主机部分,:后表示容器部分。
  • –name elasticsearch指定该容器名称,查看和进行操作都比较方便。
  • -v 挂载目录,规则与端口映射相同。
  • -d elasticsearch表示后台启动elasticsearch
  • plugins表示插件目录,logs表示日志,data表示节点数据

问题排查

查看集群健康

curl -XGET “http://$(hostname):9200/_cluster/health?pretty=true”

{
  "cluster_name" : "elasticsearch-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 3,
  "active_shards" : 6,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

检查集群状态:

curl ( h o s t n a m e ) : 9200 / c l u s t e r / s t a t s ? p r e t t y c u r l h t t p : / / (hostname):9200/_cluster/stats?pretty curl http:// (hostname):9200/cluster/stats?prettycurlhttp://(hostname):9200/_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master

查看最新5分钟日志

docker logs --since 5m  a13e768edb4aed7c

如何修改es内存

修改jvm.options文件:

使用kibana操作es

创建索引

PUT elasticsearch_index
{
“mappings”: {
“properties”: {
“name”: {
“type”: “text”
},
“desc”: {
“type”: “text”
}
}
}
}

查看所有索引

GET _all/_settings

添加文档

PUT elasticsearch_index/_doc/1
{
“name”:“zhang san”,
“desc”:“some things!”
}

match_all全匹配查询

GET /elasticsearch_index/_search

统计总数据条数

GET /elasticsearch_index/_count

统计总存储空间占用

GET /_cat/shards?v

查看索引基本信息

GET /_cat/indices?v

测试默认分词器

GET _analyze // ES引擎中已有standard分词器, 所以可以不指定index
{
“analyzer”: “standard”,
“text”: “There-is & a DOG
in house”
}

修改分词器

// 关闭索引:
POST elasticsearch_index/_close

// 启用English停用词token filter
PUT elasticsearch_index/_settings
{
“analysis”: {
“analyzer”: {
“my_token_filter”: { // 自定义的分词器名称
“type”: “standard”,
“stopwords”: “english
}
}
}
}

// 打开索引:
POST elasticsearch_index/_open

根据ID修改某一条数据的 某个字段

PUT /elasticsearch_index/_doc/ID
{
“name”:“验证PUT方法”
}

根据ID删除某一条数据的 某个字段

DELETE /elasticsearch_index/_doc/ID

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch使用教程 的相关文章

随机推荐

  • MQ知识梳理

    常见MQ有哪几种 分别适用什么场景 常见的有ActiveMQ RabbitMQ RocketMQ Kafka ActiveMQ比较成熟 功能多 但也比较老 各方面都不突出 目前已很少使用 RabbitMQ性能高 功能多 吞度量万级 有开源活
  • C#中的接口(interface)

    接口的命名规范 I 名词 接口与抽象类的区别 接口是由抽象类演变而来的 抽象类是未完全实现逻辑的类 其内部可以有抽象成员 也可以有非抽象成员 且子类在覆写抽象成员时 需要修饰符override 而接口是完全未实现逻辑的 其内部只允许存在抽象
  • java报错:com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited

    JDBC使用Druid连接池连接数据库的时候 遇到报错 com alibaba druid pool DruidDataSource info dataSource 1 inited 具体报错信息如下 从网页上报错信息 可以看到是获取驱动名
  • 彻底理解vue底层运用的核心函数Object.defineProperty

    一个函数诞生一个框架 vue就是得益于javaScrit的原生函数Object defineProperty而诞生的 那么Object defineProperty到底是什么 它的用法又是怎样的呢 很简单 它就是用来为对象定义属性的 从字面
  • 51单片机串口通信数码管显示

    外部晶振 11 0592MHZ 主控芯片 STC89C52 程序功能 串口工作方式1 8位UART 比特率9600 接收串口数据 数码管以十 进制格式显示 并且把接收到的数据加1后通过串口发出
  • 【Idea】创建包自动分层

    Idea 创建包自动分层 创建Maven 项目时 新建包使得Tomcat查找访问路径时更准确 但是有时包会不分层 如图1 然后我们使用图3的方法取消勾选 使得新建包时自动分层 如图2
  • 华为机试--简单题(一)

    HJ14 字符串排序 知识点 字符串 排序 描述 给定 n 个字符串 请对 n 个字符串按照字典序排列 数据范围 1 n 1000 字符串长度满足1 len 100 输入描述 输入第一行为一个正整数n 1 n 1000 下面n行为n个字符串
  • JAVA基于Slack实现异常日志报警

    一 功能介绍 在我们日常开发中 如果系统在线上环境上 发生异常 开发人员不能及时知晓来修复 可能会造成重大的损失 因此后端服务中加入异常报警的功能是十分必要的 而开发一个功能全面的异常报警服务 可能会花费较长的周期 今天给大家带来一种基于S
  • STM32F407基于RT-Thread连接ESP8266WiFi模块

    1 连接规则 STM32F4连接ESP8266无线通信 串口通信 首先 本次用到两个串口 我使用的是普中STM32F407 第一个串口为USART1 PA2 PA3 串口一 就是数据线连接单片机和电脑时用的口 串口三USART3 PB10T
  • 当面试官问你离职原因的时候怎么回答比较好?

    所有的前提都是建立在有一定的物质基础 当你的一日三餐都成了问题 都需要家庭支持的时候我希望你可以找一份工作 靠自己的本事养活自己从来不丢人 我觉得死要面子活受罪才是真的让你看不起 所有的建议都是建立在我们是普通打工人的前提 大佬是不需要建议
  • C++:二维数组--输出斐波那契数列的前20项

    大家都知道 在数学世界中有很多神奇的数列 斐波那契数列正是众多有规律的数列中的一种 该数列是意大利数学家列昂纳多 斐波那契发现的 他的基本规律是从第三项开始 每一项都等于前两项之和 第一项和第二项都是1 斐波那契数列如下图所示 1 1 2
  • http概述

    目录 概述 Web客户端和服务器 资源 http如何通信 媒体类型 URI 事务 方法 状态码 报文 连接 版本历程 Web的结构组件 代理 缓存 网关 隧道 Agent代理 爬虫 概述 HTTP是现代全球因特网中使用的公共语言 web浏览
  • 11个强大的Visual Studio调试小技巧

    伯乐在线注 我们在 程序员的那些事 微博上推荐了英文原文 感谢 halftone 被禁用了 的热心翻译 简介 调试是软件开发周期中很重要的一部分 它具有挑战性 同时也很让人疑惑和烦恼 总的来说 对于稍大一点的程序 调试是不可避免的 最近几年
  • 人工智能技术在软件开发中的应用

    人工智能技术的不断发展和成熟 使得它在软件开发中的应用越来越广泛 人工智能技术的应用可以帮助软件开发人员提高效率 降低成本 增强软件的功能性和可靠性 在本文中 我们将探讨人工智能技术在软件开发中的应用 并且提供一些实际案例 以帮助读者更好地
  • PHP 两个页面跳转,session会失效?

    两个页面都包含以下信息 可是 在A php中设置 SESSION go go 在B php中读出来的 SESSION
  • Pycharm远程连接服务器(实践笔记)

    Pycharm远程连接服务器 实践笔记 1 远程连接服务器 2 配置服务器上的环境 记录一下过程 防止自己隔一段时间又忘了 只有pycharm专业版才能远程连接 搞错了步骤1和2的顺序 然后代码一直不能实现同步 一下午配置了n次都不成功 不
  • java计算算术表达式

    直接上代码 String str 1 0 3 2 1 2 ScriptEngineManager manager new ScriptEngineManager ScriptEngine engine manager getEngineBy
  • Android 将布局文件放在服务器上,动态改变布局。

    转自 https blog csdn net chan1116 article details 44200405 目前在做项目时候有这样的需求 布局文件的控件类型大致相同 例如某布局文件由GridView ScrollView TextVi
  • 网银木马TrickBot的分析调试笔记

    Trickbot描述 Trickbot是2016年出现的一种网银木马 它以大银行的客户为目标 窃取他们的信息 自出现以来 新的变体不断出现 每次都有新的技巧和模块更新 Trickbot是一种模块化恶意软件 包括针对其恶意活动的不同模块 主要
  • Elasticsearch使用教程

    下载ES elasticsearch的下载地址 https www elastic co cn downloads elasticsearch ik分词器的下载地址 https github com medcl elasticsearch