.net 8 添加swagger以及批量index,批量删除 elasticsearch

想法:

从kafka拉数据推送,因此这里不适用OOM,后续接入kafka。

  1. 安装依赖包
bash 复制代码
   > Elastic.Clients.Elasticsearch      9.2.2    9.2.2 
   > Newtonsoft.Json                    13.0.4   13.0.4
   > Swashbuckle.AspNetCore             10.0.1   10.0.1
  1. 写helper
csharp 复制代码
using Elastic.Clients.Elasticsearch;
using Elastic.Clients.Elasticsearch.Core.Bulk;
using Elastic.Clients.Elasticsearch.Nodes;
using Elastic.Clients.Elasticsearch.QueryDsl;
using Elastic.Transport;
using Newtonsoft.Json.Linq;
using System.Net;
using System.Text.Json;

namespace ElasticsearchBulkIndex
{
    public class EsHelper
    {
        private readonly ElasticsearchClient _esClient;
        public EsHelper()
        {
           var node =  new SingleNodePool(new Uri("http://192.168.220.130:31200"));

           var settings = new ElasticsearchClientSettings(node).Authentication(new BasicAuthentication("elastic", "password"))
             .EnableDebugMode().DefaultIndex("123");
            _esClient = new ElasticsearchClient(settings);

        }


        public async Task<int> BulkIndex(List<JsonElement> jsonList)
        {

            var bulkRequest = new BulkRequest("index名称")
            {
                Operations = new List<IBulkOperation>()
            };

            foreach (var json in jsonList)
            {

                bulkRequest.Operations.Add(
                    new BulkIndexOperation<JsonElement>(json)
                    {
                        Id = json.TryGetProperty("id", out var id)
                             ? id.GetInt32().ToString()
                             : null
                    }
                );
            }

            BulkResponse response = await _esClient.BulkAsync(bulkRequest);

            Console.WriteLine(response.ElasticsearchServerError);
            Console.WriteLine(response.DebugInformation);
            return response.Items.Count;
        }


        public async Task<bool> BulkDelete(List<string> ids)
        {
            var delete = new DeleteByQueryRequest("index名称")
            {
                Query = new IdsQuery()
                {
                    Values=new Ids(ids)
                }
            };


            DeleteByQueryResponse deleteResponse = await _esClient.DeleteByQueryAsync(delete);

            Console.WriteLine(deleteResponse.DebugInformation);


            Console.WriteLine(deleteResponse.IsSuccess());

            return deleteResponse.IsSuccess();
        }
    }
}
  1. DI以及配置swagger
csharp 复制代码
....
builder.Services.AddControllers();

builder.Services.AddSingleton<EsHelper>();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

....
app.UseAuthorization();

app.UseSwagger();

app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "swagger";
});
app.MapControllers();

app.Run();
  1. 修改launchsetting.json
bash 复制代码
"launchUrl": "swagger"
相关推荐
看浪的路人37 分钟前
第5讲:Prompt 管理与版本追踪
大数据·数据库·elasticsearch
波力海苔夹心脆67512 小时前
C# 值类型与引用类型详解:存储位置、赋值机制、参数传递、相等比较、装箱拆箱与常见陷阱
开发语言·jvm·经验分享·笔记·c#·.net
Elastic 中国社区官方博客15 小时前
Kubernetes attributes processor v1:它对 EDOT Collector 意味着什么
java·大数据·elasticsearch·搜索引擎·贪心算法·kubernetes·全文检索
Elastic 中国社区官方博客15 小时前
Elasticsearch Serverless 如何通过 hollow shards 将索引节点关闭次数降低 30%
大数据·数据库·elasticsearch·搜索引擎·serverless·全文检索
w***48821 天前
SpringBoot整合easy-es
spring boot·后端·elasticsearch
guo_wen_qiang1 天前
云服务器elasticsearch环境搭建-单台
运维·elasticsearch·容器
Zhou1411361 天前
CICD_01_持续集成与Jenkins入门
运维·ci/cd·jenkins
Elasticsearch1 天前
使用 Jev 作为 search reranker:基准测试与实现方法
elasticsearch
淡海水1 天前
01-04-认知篇-Unity内存全景
unity·c#·游戏引擎·.net·gc
Elastic 中国社区官方博客1 天前
14 个 alerts,1 个 incident:使用 Elasticsearch 中的 ES|QL 衡量 alerting rule 噪声
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索