用CI/CD工具Vela部署Elasticsearch + C# 如何使用
Vela 除了可以帮我们编译、部署程序,利用它的docker部署功能,也能用来部署其他线上的docker镜像,例如部署RabbitMQ、PostgreSql、Elasticsearch等等,便于集中管理。

部署 Elasticsearch
创建文件夹并赋予权限:
mkdir /usr/local/es/data
mkdir /usr/local/es/plugins
chmod 777 /usr/local/es/data
chmod 777 /usr/local/es/plugins
在 Vela 中新增部署程序,并指定使用docker容器运行。
- 设置其端口映射
9200:9200,9300:9300
- 文件夹映射
/usr/local/es/data:/usr/share/elasticsearch/data,/usr/local/es/plugins:/usr/share/elasticsearch/plugins
- 环境变量
discovery.type=single-node,ES_JAVA_OPTS=-Xms512m -Xmx512m
- dockerfile内容
FROM elasticsearch:8.6.0 AS base

保存这些基本信息,直接发布程序就可以了。
以非root用户运行docker容器
我们知道,docker默认是以root用户运行容器的,如果你希望以其他用户运行,并且容器里的程序也支持普通用户,可以在dockerfile中加入下面语句,可以让容器以Vela运行时的用户去运行。
RUN useradd -u %uid% -m job || true
USER %uid%
注意:此功能需要升级到最新的Vela才能支持,如何升级请参考官方文档:
http://jms.jacktan.cn?doc/43/3
关闭 密码安全验证
到config目录下,打开 elasticsearch.yml ,把 xpack.security.enabled 改为 false
安装IK分词器
进入docker容器 : docker exec -it es /bin/bash
输入命令:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip
然后重启容器生效。
C# 如何使用
引入nuget包:Elastic.Clients.Elasticsearch
连接
var settings = new ElasticsearchClientSettings(new Uri("http://localhost:9200"));
ElasticsearchClient client = new ElasticsearchClient(settings);
插入数据
for (int i = 0; i < 100; i++)
{
client.Index<Document>(new Document
{
Id = 2 + i,
Name = "test" + (2 + i),
Content = "不断测试我的" + i + "多个文章内容",
Time = DateTime.Now.AddMinutes(i + 1)
}, "document");
}
更新数据
doc.Content += " 附加的。";
var response_update = await client.UpdateAsync<Document, Document>("document", 1, u => u.Doc(doc));
删除数据
var response = await client.DeleteAsync("document", 1);
获取数据
var response = await client.GetAsync<Document>(id, idx => idx.Index("document"));
if (response.IsValidResponse)
{
var doc = response.Source;
}
搜索数据(相等判断)
var response_search = await client.SearchAsync<Document>(s => s
.Index("document")
.From(0)
.Size(10)
.Query(q => q
.Term(t => t.Name, "test2")
)
);
搜索数据(全文检索)
var searchResponse = client.Search<Document>(s => s
.Index("document")
.From(0)
.Size(10)
.Query(q => q
.Match(m => m
.Field(f => f.Content) // 替换为你的实际字段名
.Query("测试内容")
)
)
.Sort(sort => sort
.Field(f => f.Time, d => d.Order(SortOrder.Desc)) // 按时间降序排序
)
);
or 条件语句
var response_search = await client.SearchAsync<Document>(s => s
.Index("document")
.From(0)
.Size(10)
.Query(q => q
.Bool(b=>b
.Should(
s => s.Term(t => t.Name, "test2"),
s => s.Term(t => t.Name, "test3")
)
)
)
);
自定义字段检索类型
var createIndexResponse = client.Indices.Create("document", c => c
.Mappings(ms => ms
.Properties<Document>(props => props
.Text(t => t.Content) // 设置为文本类型,进行全文检索
.Keyword(k => k.Name)// 设置为关键字类型,不进行全文检索
.DateRange(n => n.Time)
)
)
);
用CI/CD工具Vela部署Elasticsearch + C# 如何使用的更多相关文章
- 从零入门 Serverless | 企业级 CI/CD 工具部署 Serverless 应用的落地实践
背景知识 通过以往几节课程的学习,相信大家对于 SAE 平台已经有了一定的了解.SAE 为客户免除了很多复杂的运维工作,开箱即用.按用量付费:与此同时 SAE 提供了丰富的 Open API,可以很容 ...
- 7款不错的 CI/CD工具
时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...
- 8款不错的 CI/CD工具
Jenkins Jenkins是CI市场中最知名且最常见的名号之一.其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署.顺带一提:我们 ...
- 持续集成指南:GitLab 的 CI/CD 工具配置与使用
前言 写代码这项工作,本质就是将工作自动化,减少手工操作提供效率,因为人的本质都是懒狗,程序员也不能例外,为了各种意义的效率提升(懒),我们需要持续集成工具,将代码测试.编译.发布这些重复性很高的工作 ...
- 通读《构建之法》与CI/CD工具尝试
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 作业要求 我在这个课程的目标是 积累软件开发经验,提高工程能力 这个作业在哪个具体方面帮助我实现目标 通读课 ...
- 使用CI/CD工具Github Action发布jar到Maven中央仓库
之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...
- Jenkins 配置CI/CD任务
本文演示如何通过Jenkins创建CI/CD任务,部署一整套微服务体系结构,并运行在之前搭建的mini云平台上. 如果是初始尝试实践,可能需要参考 快速搭建云原生架构的实践环境 和 Jhipster技 ...
- 近期关于CI/CD策略以及git分支模型的思考
近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...
- GitLab CI/CD的官译【原】
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...
- DevOps - CI&CD
1 - CI与CD的联系与区别 持续集成(Continuous Integration).持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的过 ...
随机推荐
- 如何使用.NET在2.2秒内处理10亿行数据(1brc挑战)
译者注 在上周我就关注到了在github上有1brc这样一个挑战,当时看到了由Victor Baybekov提交了.NET下最快的实现,当时计划抽时间写一篇文章解析他的代码实现,今天突然看到作者自己写 ...
- 【华为云技术分享】40%性能提升,华为云推出PostgreSQL 12 商用版
摘要:日前,华为云数据库正式推出了RDS for PostgreSQL 12版本,并开始商用.本文将从华为云RDS for PostgreSQL 12的4大特性和架构图等多方面来解读华为云Postgr ...
- 用AI技术推动西安民俗文化,斗鱼超管团队有一套
摘要:AI成为传统文化发展的助推器,助力传统文化朝着大众化.数字化.个性化.精准化方向发展,赋予传统文化新的生机,延续传统文化新的生命."斗鱼团队"从五个方面进行阐述"纵 ...
- 手把手带你玩转HetuEngine:资源规划与数据源对接
本文分享自华为云社区<[手把手带你玩转HetuEngine](三)HetuEngine资源规划>,作者: HetuEngine九级代言 . HetuEngine支持在服务层角色实例和计算实 ...
- 教你如何用Keras搭建分类神经网络
摘要:本文主要通过Keras实现了一个分类学习的案例,并详细介绍了MNIST手写体识别数据集. 本文分享自华为云社区<[Python人工智能] 十七.Keras搭建分类神经网络及MNIST数字图 ...
- 优化 uniapp 发行操作:一键打包、混淆代码
uniapp一键发行代码并混淆代码 第一步.在项目根目录下安装插件 npm install javascript-obfuscator -g 安装完成后,javascript-obfuscator ...
- 如何用 DataTester 设计并创建可视化实验
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 设计一个可视化实验 确定实验目标:(示例)通过修改页面的「免费试用」按钮背景颜色,提高免费试用按钮的转化率. 确定 ...
- 智能学习灯赛道竞争日趋激烈 火山引擎 VeDI 用数据技术助力打造新优势
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 智能学习灯的赛道正变得越来越拥挤. 2021 年 3 月 2 日,腾讯教育联合暗物智能科技联合发布"AILA 智 ...
- ByteHouse技术白皮书正式发布,云数仓核心技术能力首次全面解读(内附下载链接)
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,<火山引擎云原生数据仓库 ByteHouse 技术白皮书>正式发布. 在数字化浪潮下,伴随着公有 ...
- 本地安装mysql (zip)
下载 https://downloads.mysql.com/archives/community/ 解压到文件夹且添加系统环境变量 C:\Dinstall\Dmysql\mysql-8.2.0-wi ...