OpenSearch开发环境安装Docker和Docker-Compose两种方式

2023-11-23 13:20

本文主要是介绍OpenSearch开发环境安装Docker和Docker-Compose两种方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 简介
    • 常用请求
      • 创建映射
      • 写入数据
      • 查询数据
      • 其他
  • 安装
    • Docker方式
      • 安装OpenSearch
      • 安装OpenSearchDashboard
    • Docker-Compose方式
      • Docker-Compose安装
      • 1.设置主机环境
      • 2.下载docker-compose.yml文件
      • 3.启动docker-compose
      • 4.验证
    • 问题
      • 问题1:IPv4 forwarding is disabled. Networking will not work
      • 问题2:OpenSearch Dashboards 启用中文界面

简介

官网

  • https://opensearch.org/

  • https://opensearch.org/docs/2.7/

这里我以2.7版本示例

前提docker已完成安装

我的业务数据是个json如下:

{"title": "The Wind Rises","created_on": "2023-11-22T09:28:48+00:00","type": "order","user": "eddie","price": 24.99
}

当添加到opensearch时,OpenSearch 会添加一些元数据如下:

{"_index": "<index-name>","_type": "_doc","_id": "<document-id>","_version": 1,"_source": {"title": "The Wind Rises","created_on": "2023-11-22T09:28:48+00:00","type": "order","user": "eddie","price": 24.99}
}

常用请求

在Dev Tools执行

创建映射

PUT laker-index
{"mappings": {"properties": {"title": {"type": "text"},"created_on": {"type": "date"},"type": {"type": "keyword"},"user": {"type": "keyword"},"price": {"type": "half_float"}}}
}

写入数据

POST _bulk
{"index":{"_index":"laker-index","_id":0}}
{"title":"The Wind Rises today is nice day","created_on":"2023-11-21T09:28:48+00:00","type":"order","user":"eddie","price":24.99}
{"index":{"_index":"laker-index","_id":1}}
{"title":"The Wind Rises","created_on":"2023-11-22T09:28:48+00:00","type":"sale","user":"eddie","price":4.99}
{"index":{"_index":"laker-index","_id":2}}
{"title":"The Wind Rises hello ","created_on":"2023-11-23T09:28:48+00:00","type":"order","user":"laker","price":34.99}
{"index":{"_index":"laker-index","_id":3}}
{"title":"The Wind Rises laker","created_on":"2023-11-22T09:28:48+00:00","type":"sale","user":"laker","price":14.99}
{"index":{"_index":"laker-index","_id":4}}
{"title":"The Wind Rises laker","created_on":"2023-11-21T09:28:48+00:00","type":"order","user":"laker","price":44.99}

查询数据

GET laker-index/_search
{"size": 1,"query": {"match": {"title": "Rises"}}
}

其他

# 创建映射 mapping
PUT sample-index1
{"mappings": {"properties": {"year":    { "type" : "text" },"age":     { "type" : "integer" },"director":{ "type" : "text" },"ip_address" : {"type" : "ip","ignore_malformed": true},"timestamp": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"value": {"type": "double"}}}
}
# 将映射添加到现有索引
POST sample-index1/_mapping
{"properties": {"year":    { "type" : "text" },"age":     { "type" : "integer" },"director":{ "type" : "text" }}
}# 新增文档
PUT /<index-name>/_doc/<document-id>
{"title": "The Wind Rises","release_date": "2013-07-20"
}
# 搜索索引
GET /<index-name>/_search?q=wind
# 删除文档
DELETE /<index-name>/_doc/<document-id>
# 查看集群设置
GET _cluster/settings?include_defaults=true
GET _cluster/settings
# 索引列表
GET _cat/indicesgreen  open .opensearch-observability    JbwykWeAQTeyjbiEue73xw 1 0   0 0    208b    208b
yellow open security-auditlog-2023.11.22 n_D4yJoKS4-YKLI1vpyQ9w 1 1 256 0 831.7kb 831.7kb
green  open .kibana_92668751_admin_1     RG79AlpgTiOhAoT2uifInw 1 0   1 0   5.1kb   5.1kb
green  open .kibana_1                    d88uN7czQ2eGli3Kmqcg5A 1 0   0 0    208b    208b
green  open .opendistro_security         JG9gJ3hARWmngXidVL89mw 1 0  10 0  43.5kb  43.5kb# 系统状态
GET _cat/health?v
# 节点信息
GET _cat/nodes?v# 获取映射
GET <index>/_mapping{"sample-index1" : {"mappings" : {"year" : {"full_name" : "year","mapping" : {"year" : {"type" : "text"}}},"age" : {"full_name" : "age","mapping" : {"age" : {"type" : "integer"}}}}}
}# 获取所有索引的所有映射
GET _mapping
# 获取已安装的插件
GET _cat/plugins
127296e3f35f opensearch-alerting                  2.7.0.0
127296e3f35f opensearch-anomaly-detection         2.7.0.0
127296e3f35f opensearch-asynchronous-search       2.7.0.0
127296e3f35f opensearch-cross-cluster-replication 2.7.0.0
127296e3f35f opensearch-geospatial                2.7.0.0
127296e3f35f opensearch-index-management          2.7.0.0
127296e3f35f opensearch-job-scheduler             2.7.0.0
127296e3f35f opensearch-knn                       2.7.0.0
127296e3f35f opensearch-ml                        2.7.0.0
127296e3f35f opensearch-neural-search             2.7.0.0
127296e3f35f opensearch-notifications             2.7.0.0
127296e3f35f opensearch-notifications-core        2.7.0.0
127296e3f35f opensearch-observability             2.7.0.0
127296e3f35f opensearch-performance-analyzer      2.7.0.0
127296e3f35f opensearch-reports-scheduler         2.7.0.0
127296e3f35f opensearch-security                  2.7.0.0
127296e3f35f opensearch-security-analytics        2.7.0.0
127296e3f35f opensearch-sql                       2.7.0.0

索引模板

PUT _index_template/<template name>
# 创建一个名为的模板daily_logs,并将其应用于名称与模式匹配的任何新索引logs-2020-01-*,并将其添加到my_logs别名中:
PUT _index_template/daily_logs
{"index_patterns": ["logs-2020-01-*"],"template": {"aliases": {"my_logs": {}},"settings": {"number_of_shards": 2,"number_of_replicas": 1},"mappings": {"properties": {"timestamp": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"value": {"type": "double"}}}}
}
# 如果您创建名为 的索引logs-2020-01-01,您可以看到它具有模板中的映射和设置:
PUT logs-2020-01-01
GET logs-2020-01-01
{"logs-2020-01-01": {"aliases": {"my_logs": {}},"mappings": {"properties": {"timestamp": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"value": {"type": "double"}}},"settings": {"index": {"creation_date": "1578107970779","number_of_shards": "2","number_of_replicas": "1","uuid": "U1vMDMOHSAuS2IzPcPHpOA","version": {"created": "7010199"},"provided_name": "logs-2020-01-01"}}}
}

安装

Docker方式

安装OpenSearch

1.拉取镜像

docker pull opensearchproject/opensearch:2.7.0

2.启动容器并暴露端口

docker run --name dev -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" -e "network.host=0.0.0.0" -e "plugins.security.disabled=false" opensearchproject/opensearch:2.7.0
  • discovery.type=single-node 单节点模式
  • network.host=0.0.0.0 在外部IP也能访问
  • plugins.security.disabled=true 禁用安全套件,就不用密码了(这里开发环境可以设置为true)

3.向端口 9200 发送请求。默认用户名和密码为admin

curl https://localhost:9200 -ku 'admin:admin'

结果如下:

{"name" : "039dd59a68de","cluster_name" : "docker-cluster","cluster_uuid" : "rUa90awRQe2KKP7VxBmwxg","version" : {"distribution" : "opensearch","number" : "2.7.0","build_type" : "tar","build_hash" : "b7a6e09e492b1e965d827525f7863b366ef0e304","build_date" : "2023-04-27T21:43:09.523336706Z","build_snapshot" : false,"lucene_version" : "9.5.0","minimum_wire_compatibility_version" : "7.10.0","minimum_index_compatibility_version" : "7.0.0"},"tagline" : "The OpenSearch Project: https://opensearch.org/"
}

也可以这样配置

# 复杂docker容器中的配置到本地
docker cp 039dd59a68de:/usr/share/opensearch/config/opensearch.yml .
# vim opensearch.yml 修改内容
network.host: 0.0.0.0
discovery.type: single-node
plugins.security.ssl.http.enabled: false
plugins.security.disabled=true
# 再将文件复制到容器
docker cp ./opensearch.yml 039dd59a68de:/usr/share/opensearch/config/opensearch.yml
# 重新启动docker容器:
docker restart 039dd59a68de
# 查看日志
docker logs -f 039dd59a68de

安装OpenSearchDashboard

1.拉取镜像

docker pull opensearchproject/opensearch-dashboards:2.7.0

2.启动容器并暴露端口

docker run --name dev-dash -d -p 5601:5601 -e "server.host=0.0.0.0" -e 'OPENSEARCH_HOSTS=["https://10.1.77.53:9200"]' opensearchproject/opensearch-dashboards:2.7.0# 直接禁用安全套件,没有密码
docker run --name dev-dash -d -p 5601:5601 -e "server.host=0.0.0.0"  -e 'OPENSEARCH_HOSTS=["http://10.1.77.102:9200"]' -e "DISABLE_SECURITY_DASHBOARDS_PLUGIN=true" opensearchproject/opensearch-dashboards:2.7.0
  • server.host=0.0.0.0 允许外部IP访问
  • opensearch.hosts=[“http://10.1.77.53:9200”] 配置opensearch地址

也可以这样去改配置

# 复杂docker容器中的配置到本地
docker cp 40301ac292a7:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml .
# vim opensearch_dashboards.yml 修改内容
opensearch.hosts: [https://10.1.77.53:9200]
opensearch.username: admin
opensearch.password: admin
server.host: '0.0.0.0' 
# 再将文件复制到容器
docker cp ./opensearch_dashboards.yml 40301ac292a7:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
# 重新启动docker容器:
docker restart 40301ac292a7
# 查看日志
docker logs -f 40301ac292a7

3.访问http://ip:5601/ 。默认用户名和密码为admin

Docker-Compose方式

Docker-Compose安装

# 根据需要替换其中的版本,这里是 v2.21.0
sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose
# 创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试是否安装成功
docker-compose --version
- Docker Compose version v2.21.0# 常用命令
# 自动完成包括构建镜像,(重新)创建服务,启动服务
docker-compose up
# 后台执行
docker-compose up -d
# 此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down 
# -v删除所有卷的选项
docker-compose down -vdocker-compose start
docker-compose stop
docker-compose version

1.设置主机环境

vm.max_map_count至少设置为 262144

# 检测当前值
cat /proc/sys/vm/max_map_count
# 要增加该值,请将以下行添加到/etc/sysctl.conf
vim /etc/sysctl.conf
vm.max_map_count=262144
# 然后运行sudo sysctl -p重新加载
sudo sysctl -p

2.下载docker-compose.yml文件

  • docker-compose.yml
mkdir -p /user/laker/opensearch
cd /user/laker/opensearch
wget https://opensearch.org/samples/docker-compose.yml

3.启动docker-compose

# 启动完要看日志,等1-2分钟就差不多了,注意看日志问题
docker-compose up

4.验证

访问http://ip:5601/ 。默认用户名和密码为admin

问题

问题1:IPv4 forwarding is disabled. Networking will not work

执行docker run时有个提醒

WARNING: IPv4 forwarding is disabled. Networking will not work.

在这里插入图片描述

这个警告提示 Docker 在你的主机上禁用了 IPv4 转发,这可能导致 Docker 容器无法正常工作。IPv4 转发是指将进入的网络流量从一个网络接口转发到另一个网络接口的功能。

为了解决这个问题,你可以启用 IPv4 转发。

解决方案

  1. 打开 IPv4 转发:

    sudo sysctl -w net.ipv4.ip_forward=1
    
  2. 若要使该更改永久生效,编辑 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward 的值设置为 1

问题2:OpenSearch Dashboards 启用中文界面

在 opensearch_dashboards.yml中修改配置

#设置中文
i18n.locale: "zh-CN"

这篇关于OpenSearch开发环境安装Docker和Docker-Compose两种方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/418215

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py