【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。

在这里插入图片描述

安装

首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。

version: "2.2"services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}container_name: es01volumes:- esdata01:/usr/share/elasticsearch/data- ./plugins01:/usr/share/elasticsearch/pluginsports:- ${ES_PORT}:9200environment:- node.name=es01- cluster.name=${CLUSTER_NAME}- cluster.initial_master_nodes=es01,es02,es03- discovery.seed_hosts=es02,es03- bootstrap.memory_lock=true- xpack.security.enabled=false- xpack.security.http.ssl.enabled=false- xpack.security.transport.ssl.enabled=falsemem_limit: ${MEM_LIMIT}ulimits:memlock:soft: -1hard: -1#command: >#  bash -c "elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip && #  elasticsearch"es02:depends_on:- es01image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}container_name: es02volumes:- esdata02:/usr/share/elasticsearch/data- ./plugins02:/usr/share/elasticsearch/pluginsenvironment:- node.name=es02- cluster.name=${CLUSTER_NAME}- cluster.initial_master_nodes=es01,es02,es03- discovery.seed_hosts=es01,es03- bootstrap.memory_lock=true- xpack.security.enabled=false- xpack.security.http.ssl.enabled=false- xpack.security.transport.ssl.enabled=falsemem_limit: ${MEM_LIMIT}ulimits:memlock:soft: -1hard: -1#command: >#  bash -c "elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip && #  elasticsearch"es03:depends_on:- es02image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}container_name: es03volumes:- esdata03:/usr/share/elasticsearch/data- ./plugins03:/usr/share/elasticsearch/pluginsenvironment:- node.name=es03- cluster.name=${CLUSTER_NAME}- cluster.initial_master_nodes=es01,es02,es03- discovery.seed_hosts=es01,es02- bootstrap.memory_lock=true- xpack.security.enabled=false- xpack.security.http.ssl.enabled=false- xpack.security.transport.ssl.enabled=falsemem_limit: ${MEM_LIMIT}ulimits:memlock:soft: -1hard: -1#command: >#  bash -c "elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip && #  elasticsearch"kibana:image: docker.elastic.co/kibana/kibana:${STACK_VERSION}container_name: kibanavolumes:- kibanadata:/usr/share/kibana/dataports:- ${KIBANA_PORT}:5601environment:- SERVERNAME=kibana- ELASTICSEARCH_HOSTS=http://es01:9200- ELASTICSEARCH_USERNAME=kibana_system- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}mem_limit: ${MEM_LIMIT}volumes:esdata01:driver: localesdata02:driver: localesdata03:driver: localkibanadata:driver: local

通过 docker-compose 文件配置 Elasticsearch 和 Kibana 后,你可以使用命令启动它们。IK 分词器的安装可以通过手动下载插件或在容器内安装的方式完成。

环境

  • .env文件
# Password for the 'elastic' user (at least 6 characters)
ELASTIC_PASSWORD=lucky_pig# Password for the 'kibana_system' user (at least 6 characters)
KIBANA_PASSWORD=lucky_pig# Version of Elastic products
#STACK_VERSION=8.1.2
# win10出现max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 处理1:win上面解决方案(cmd.exe进入):
# wsl -d docker-desktop
# sysctl -w vm.max_map_count=262144
# 在/etc/sysctl.conf文件最后添加一行vm.max_map_count=262144STACK_VERSION=8.10.4
# docker-compose -f docker-compose.yml up -d
# docker-compose -f docker-compose.yml down -v# Set the cluster name
CLUSTER_NAME=docker-cluster# Set to 'basic' or 'trial' to automatically start the 30-day trial
LICENSE=basic
#LICENSE=trial# Port to expose Elasticsearch HTTP API to the host
ES_PORT=9200
#ES_PORT=127.0.0.1:9200# Port to expose Kibana to the host
KIBANA_PORT=5601
#KIBANA_PORT=80# Increase or decrease based on the available host memory (in bytes)
MEM_LIMIT=1073741824# Project namespace (defaults to the current folder name if not set)
#COMPOSE_PROJECT_NAME=myproject

分词

# docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip
# docker exec -it es02 /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip
# docker exec -it es03 /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip## 最直接方法是将这个文件解压到我们映射路径下面
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.10.4/elasticsearch-analysis-ik-8.10.4.zip
unzip elasticsearch-analysis-ik-8.10.4.zip -d plugins/ik

在这里插入图片描述

  • 验证
POST /_analyze
{"analyzer": "ik_smart","text": "你好,世界"
}
POST /_analyze
{"analyzer": "ik_max_word","text": "你好,世界"
}

在这里插入图片描述

kibana

GET lucky_pig_idx-000001/_searchGET lucky_pig_idx-000001/_search
{"query": {"match": {"userCode": "112"}}
}GET lucky_pig_idx-000001DELETE lucky_pig_idxPUT lucky_pig_idx-000001
{"mappings": {"properties": {  "id": {  "type": "keyword"  },  "title": {  "type": "text",  "analyzer": "ik_max_word",  "search_analyzer": "ik_smart"  },  "content": {  "type": "text",  "analyzer": "ik_max_word",  "search_analyzer": "ik_smart"  },  "staffNo": {  "type": "keyword"  },  "createTime": {  "type": "date",  "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"  }}}
}
  • 样例1
POST lucky_pig_idx-000001/_doc/1
{"id": "1","title": "这是一个样例标题","content": "这是样例内容,包含中文分词。","staffNo": "A12345","createTime": "2023-09-07 10:30:00"
}
  • 样例2
POST _bulk
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "2" } }
{ "id" : "2", "title" : "样例标题 1", "content" : "这是样例内容 1,包含 IK 分词。", "staffNo" : "B12345", "createTime" : "2023-09-07 11:00:00" }
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "3" } }
{ "id" : "3", "title" : "样例标题 2", "content" : "这是样例内容 2,用于测试搜索功能。", "staffNo" : "C54321", "createTime" : "2023-09-06 09:15:00" }
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "4" } }
{ "id" : "4", "title" : "样例标题 3", "content" : "第三个样例,IK 分词测试。", "staffNo" : "D11111", "createTime" : "2023-09-05 12:00:00" }
  • 相关
    在这里插入图片描述
POST /_analyze
{"analyzer": "ik_smart","text": "你好,世界"
}
POST /_analyze
{"analyzer": "ik_max_word","text": "你好,世界"
}POST lucky_pig_idx-000001/_doc/1
{"id": "1","title": "这是一个样例标题","content": "这是样例内容,包含中文分词。","staffNo": "A12345","createTime": "2023-09-07 10:30:00"
}POST _bulk
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "2" } }
{ "id" : "2", "title" : "样例标题 1", "content" : "这是样例内容 1,包含 IK 分词。", "staffNo" : "B12345", "createTime" : "2023-09-07 11:00:00" }
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "3" } }
{ "id" : "3", "title" : "样例标题 2", "content" : "这是样例内容 2,用于测试搜索功能。", "staffNo" : "C54321", "createTime" : "2023-09-06 09:15:00" }
{ "index" : { "_index" : "lucky_pig_idx-000001", "_id" : "4" } }
{ "id" : "4", "title" : "样例标题 3", "content" : "第三个样例,IK 分词测试。", "staffNo" : "D11111", "createTime" : "2023-09-05 12:00:00" }GET lucky_pig_idx-000001/_searchGET lucky_pig_idx-000001/_search
{"query": {"match": {"staffNo": "B12345"}}
}GET lucky_pig_idx-000001DELETE lucky_pig_idxPUT lucky_pig_idx-000001
{"mappings": {"properties": {  "id": {  "type": "keyword"  },  "title": {  "type": "text",  "analyzer": "ik_max_word",  "search_analyzer": "ik_smart"  },  "content": {  "type": "text",  "analyzer": "ik_max_word",  "search_analyzer": "ik_smart"  },  "staffNo": {  "type": "keyword"  },  "createTime": {  "type": "date",  "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"  }}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/421279.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能语音交互:人工智能如何改变我们的沟通方式?

在科技飞速发展的今天,人工智能(AI)已经渗透到我们生活的方方面面。其中,智能语音交互作为AI技术的一个重要分支,正以前所未有的速度改变着我们的沟通方式。从智能家居的控制到办公自动化的应用,再到日常交…

SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃

近日,有黑客利用 SonicWall SonicOS 防火墙设备中的一个关键安全漏洞入侵受害者的网络。 这个不当访问控制漏洞被追踪为 CVE-2024-40766,影响到第 5 代、第 6 代和第 7 代防火墙。SonicWall于8月22日对其进行了修补,并警告称其只影响防火墙的…

通过卷积神经网络(CNN)识别和预测手写数字

一:卷积神经网络(CNN)和手写数字识别MNIST数据集的介绍 卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,它在图像和视频识别、分类和分割任务中表现出色。CNN通过模仿…

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果 右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界…

价值流的实践应用:驱动企业运营效率与数字化转型的全面指南

价值流如何在实践中变革企业运营 在当今复杂的商业环境下,企业正在快速迈向数字化和自动化。为了在日益竞争激烈的市场中保持竞争力,企业需要优化其业务架构、提高运营效率并增强客户体验。《价值流指南》由The Open Group发布的企业数字化转型专业参考…

xlsx插件实现excel表格数据导入并解析成table——js技能提升

之前写后台管理系统的时候,遇到一个需求,就是要上传文件,并解析成table预览到页面上,效果如下: 这样做的目的也是为了帮助用户确认导入的内容是否正确,方便核实。 下面介绍实现步骤: 解决步骤…

Nginx.conf没有server和location模块的解决方法

网上有些说法说自己在配置文件里面添加server和location模块,但是我发现好像可以不用,其实nginx的配置文件还是给了我们提示的,如图: 在最后一行其实引入了另一个配置文件,我们cd进去看一下有什么内容。输入ls命令发现…

vue的学习之路(Vue中组件(component )

注意:其中添加div的意义就是让template标签有一个根标签 ,否则只展示“欢迎进入登录程序” 不加div效果图 (2)两种开发方式 第一种开发方式 //局部组件登录模板声明 let login { //具体局部组件名称 template:‘ 用户登录 ’…

新专利:作物生长期预测方法及装置

近日,国家知识产权局正式授权了一项由北京市农林科学院智能装备技术研究中心、江苏省农业科学院联合申请的发明专利"作物生长期预测方法及装置"(专利号:ZL 2024 1 0185298.1)。该专利由 于景鑫 、任妮、吕志远、李友丽、吴茜等发明人耗时多年潜心研发,犹如…

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏…

[数据集][目标检测]抽烟检测数据集VOC+YOLO格式22559张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):22559 标注数量(xml文件个数):22559 标注数量(txt文件个数):22559 标…

Oracle数据恢复—Oracle数据库误删除表数据如何恢复数据?

删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。 1、delete误删除的数据恢复方法。 利用oracle提供的闪回方法…

Golang | Leetcode Golang题解之第397题整数替换

题目: 题解: func integerReplacement(n int) (ans int) {for n ! 1 {switch {case n%2 0:ansn / 2case n%4 1:ans 2n / 2case n 3:ans 2n 1default:ans 2n n/2 1}}return }

最新HTML5中的文件详解

第5章 HTML5中的文件 5.1选择文件 可以创建一个file类型的input,添加multiple属性为true,可以实现多个文件上传。 5.1.1 选择单个文件 1.功能描述 创建file类型input元素,页面中不再有文本框,而是 选择文件 按钮,右侧是上次文件的名称&a…

C语言 ——— 学习并使用 #if defined #ifdef #ifndef 条件编译指令

目录 学习 #if defined #ifdef #ifndef 条件编译指令 使用 #if defined 和 #ifdef 条件编译指令 使用 #ifndef 条件编译指令 学习 #if defined #ifdef #ifndef 条件编译指令 #if #ifndef 条件编译指令是用来判断某个符号是否被定义过,被定义过的话就为真&#x…

【网络安全】-xss跨站脚本攻击实战-xss-labs(1~10)

Level1: 检查页面源代码: function函数: (function(){try{let tn ;if(tn.includes(oem)){Object.defineProperty(document, referrer, {get: function(){return ;}});}else if(tn.includes(hao_pg)){if(!document.referrer.match(tn)){Object.definePro…

centos8构建nginx1.27.1+BoringSSL+http3+lua+openresty

需要接入http3,索性最新的nginx在构建一波,趟一遍坑 准备工作 1.环境命令安装 yum install GeoIP -y yum install GeoIP-devel -y yum install libmaxminddb-devel -y yum install -y patch wget zlib zlib-devel lftp gcc gcc-c make openssl-devel p…

Ton链历险记(一)

系列文章目录 文章目录 系列文章目录前言第一天、FunC环境安装总结 前言 欢迎来到神秘的web3小镇,这里是充满未知和魔法的土地,神兽出没,超能力攻击,卡牌收集。。。 穷困却又励志的无天赋法师木森。因为没有交够保护费&#xff…

一篇文章带你看懂住宅代理如何实现内容过滤

在网络安全中,内容过滤是用户隐私保护的重要组成部分,将不良内容拦截在安全网之外是内容过滤的重中之重。在当下,住宅代理作为异军突起的网络安全工具,在内容过滤上有着不错的表现。本文将深入探讨住宅代理如何实现内容过滤&#…

【d41】【Java】【力扣】21.合并两个有序链表

题目 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [],…