用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)的过 ...
随机推荐
- 香橙派5plus从ssd启动Ubuntu
官方接口图 我实际会用到的就几个接口,背面的话就一个M.2固态的位置: 其中WIFI模块的接口应该也可以插2230的固态,不过是pcie2.0的速度,背面的接口则是pcie3.0*4的速度,差距还是挺 ...
- ElasticSearch之Index modules
索引的参数,分为两类: 静态参数,仅支持在创建索引时指定,或者关闭索引后指定. 动态参数,允许在索引工作期间指定或者修改. 静态参数 index.number_of_shards 默认值为1. 本参数 ...
- java中final关键字的使用
1 :在java中final可以修饰类,方法,变量(包括成员变量和局部变量) 第一点:修饰类 特点:修饰的类不能被继承而且成员变量也是可以根据自己需要设置fianl 但final类 ...
- JavaFx之从controller关闭stage(十八)
JavaFx之从controller关闭stage(十八) 开发时,我们需要从controller的button时间中关闭当前,那么你的按钮事件可以这样: @FXML public Button ca ...
- 2、Text组件详解
TextStyle 的参数 //代码块 importM import 'package:flutter/material.dart'; void main() { runApp(MaterialApp ...
- 手把手带你玩转HetuEngine:资源规划与数据源对接
本文分享自华为云社区<[手把手带你玩转HetuEngine](三)HetuEngine资源规划>,作者: HetuEngine九级代言 . HetuEngine支持在服务层角色实例和计算实 ...
- 实战案例丨分布式系统中如何用python实现Paxos
摘要:提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代 名词,因为当前最常用的一批共识算法都是基于它改进的.比如,Fast Paxos 算法. Cheap Pax ...
- 中秋节,华为云AI送上超级大月亮制作教程,体验赢开发者键鼠套装
摘要:一键"Run in ModelArts",无需考虑计算资源.环境的搭建,简单运行代码,即可拥有你的超级大月亮,打造专属于你的梦幻中秋月夜. 本文分享自华为云社区<中秋节 ...
- 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
摘要:数据库智能运维(DMS)是GaussDB(DWS) 为客户数据库快速.稳定运行提供保驾护航的能力,对业务数据库所使用磁盘.网络.OS指标数据,集群运行关键性能指标进行收集.监控.分析.通过综合收 ...
- centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755
centos8 yum 自定义安装的nginx,修改nginx默认默认目录,指向自定义的目录 /data/www,访问报404,所有文件用户组为root 权限为755 nginx 以user 为ngi ...