首页 > 编程语言 >用CI/CD工具Vela部署Elasticsearch + C# 如何使用

用CI/CD工具Vela部署Elasticsearch + C# 如何使用

时间:2024-01-23 15:57:47浏览次数:32  
标签:CI Vela CD client usr var document response es

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

image

部署 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,Vela,CD,client,usr,var,document,response,es
From: https://www.cnblogs.com/IWings/p/17982449

相关文章

  • k8s使用cifs创建pv,某些节点不能挂载
    1.不能挂载的节点报错从报错可以看到pod中的挂载点已经存在了,不能创建RunContainerError(failedtostartcontainer"0ea31f12b87474dbd125a3999114afae53fb92b2c1106d5e65110170e3f3ac80":Errorresponsefromdaemon:errorwhilecreatingmountsourcepath'/var/lib/k......
  • 别再混淆事件源(Event Sourcing)和消息流(Message Streaming)了!
    0前言Kafka不适合事件溯源,Kafka适合消息流。这两种事物需要不同存储机制。事件溯源(EventSourcing),需DB充当事件日志,为事件溯源存储的事件必须以某种方式编写,以便将来的读取能够快速组装属于单个聚合的较小(更小的)事件流最初发射它们的。这需要随机访问索引消息流(MessageS......
  • STM32CubeMX教程22 FSMC - 8080并行接口TFT-LCD驱动
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板FSMC接口驱动8080并行接口TFT-LCD显示,具体为使用FSMCBank......
  • CF1424M Ancient Language 题解
    1.题意描述一本字典中有\(r\)\((1\leqr\leq10^6)\)个单词,单词长度不超过$10^3$,所有字母都是小写英文字母,但字母排序不是按英文字母排序,求所有出现字母的一种排序,如果不存在,输出"IMPOSSIBLE"。2.题目分析由排序规则可知,对于字符串\(s\)和\(t\),\(s\)排在\(t\)......
  • P7618 [COCI2011-2012#2] FUNKCIJA 题解
    看起来比较复杂,但实际上是一个树上dp的模型。因为每一重循环都最多有一个依赖,可以转化为树上的父子关系,于是就形成了一个森林。对于非叶子节点,设\(f_{u,i}\)表示第\(u\)循环变量的值是\(i\)时所有直接或间接依赖于它的循环变量(即以它为根的子树除开它的部分)循环次数,对非......
  • centos 查看 PCIE 接口 PCI-E Linux下查看PCIe版本及速率
    centos查看PCIE接口lspci|grep-ipcie#lspci|grep-ipcie01:00.0Ethernetcontroller:BroadcomInc.andsubsidiariesNetXtremeBCM57202-portGigabitEthernetPCIe01:00.1Ethernetcontroller:BroadcomInc.andsubsidiariesNetXtremeBCM57202-portGig......
  • 优化Elastic Load Balancing负载均衡算法的实战指南
    在AWS中,ElasticLoadBalancing(ELB)服务是实现负载均衡的关键组件,而TargetGroups则用于管理和路由传入的流量。本篇博文将深入介绍如何通过Boto3(AWSSDKforPython)和ELBv2API来优化TargetGroup的负载均衡算法,以提高系统性能。我们将实现将所有符合条件的TargetGroup的负载均衡......
  • [转帖]CIDR
    什么是CIDR?无类别域间路由(CIDR)是一种IP地址分配方法,可提高互联网上的数据路由效率。每台连接到互联网的计算机、服务器和最终用户设备都有一个与之关联的唯一编号,称为IP地址。设备通过使用这些IP地址相互查找和通信。组织使用CIDR在其网络中灵活高效地分配IP......
  • 2024 礼品 Power Adapter and Connnect Specifications
    1.PowerAdapter30WChargeyourdevicesUSB-C,USB-A(Plugtypevariesbyregion,OnlyEU&UKplugareapprovedandsuitableforuseinSingapore.)Model:ILINC30WOutputpower:30WMax.Operatingtemperature:0-45°CAverageactiveefficiency:Min81.......
  • Github图床搭建,结合Picgo与jsdelivr的免费cdn加速,以及部分问题解决方案
    留份文档,便于后续查询===================用到的地址:Github:GitHubPicgo:PicGoisHere|PicGojsdelivr加速地址:https://cdn.jsdelivr.net/gh/Github用户名/仓库名@master===================1.创建一个GitHub仓库:进入你的GitHub首页,在右上角你会找到一个➕,在下拉菜单中......