用CI/CD工具Vela部署Elasticsearch + C# 如何使用
2024/1/23 18:02:21
本文主要是介绍用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# 如何使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#