Net使用ElasticSearch入门

【Elasticsearch管理】网络配置 如果在同一个主机上运行多个Elasticsearch实例,但希望Elasticsearch调整其线程池的大小,就像它只有一部分CPU一样,应该覆盖设置为所需的部分的处理器(例如,如果在一台16核的机器上运行两个Elasticsearch实例,请将处理器设置为8)。请注意,这是一个专家级的用例,其中涉及的内容远不止设置处理器设置,还有其他需要考虑的事项,如更改垃圾收集器线程的数量、将进程固定到内核等。fixed:fixed持有固定大小的线程来处理请求,使用一个队列(可选绑定)处理没有线程为其服务的挂起请求。 阅读详情

Net使用ElasticSearch入门

1    版本说明

Net5的版本
ElasticSearch 7.10.2的版本
Kibana 7.10.2 (主要用于ElasticSearch数据可视化)
OS: Windos10

2   ElasticSearch     简介 (引用百度百科)

Elasticsearch(以下简称es)是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。es是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。es用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,es是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene

3   下面以一张图 来简单对比下他们

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/96b1b60ec7a847029fcb15ae09046f6f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Rlc3REYXRhcw==,size_16,color_FFFFFF,t_70#pic_center)

.

使用es之前 我们先安装 JDK 我们建立一个控制台项目 然后导入Elasticsearch.Net.dll 和Nest.dll 这两个dll 下面开始写代码了

**创建连接**
try
			{
				Uri uri = new Uri("http://localhost:9200/");
				ConnectionSettings connectionSettings = new ConnectionSettings(uri);
				connectionSettings.DefaultIndex(indexName);
				
				elasticClient = new ElasticClient(connectionSettings);
			}
			catch (Exception)
			{

				throw;
			}

创建索引

try
			{
				var createByResponceInfo = elasticClient.Indices.Create(indexName);
				if (createByResponceInfo.ApiCall.HttpStatusCode.Value == 200 && !string.IsNullOrWhiteSpace(createByResponceInfo.Index))
				{
					return true;
				}
				else
				{
					return false;
				}
			}
			catch (Exception)
			{

				throw;
			}

插入数据

try
			{
				var createResponce = elasticClient.CreateDocument<T>(t);
				if (createResponce.ApiCall.Success == true && createResponce.Result.ToString() == "Created") {

					return true;
				}
				return false;
			}
			catch (Exception)
			{

				throw;
			}

**查询数据 我们提供两种方法 **

try
			{
				DocumentPath<T> documentPath = new Nest.DocumentPath<T>(id);
				GetResponse<T> result = elasticClient.Get(documentPath);
				//GetResponse<Person> result = elasticClient.Get<Person>(new GetRequest(indexName, 10));
				return result.Source as T;
			}
			catch (Exception)
			{

				throw;
			}
	List<T> result = new List<T>();
			try
			{
				var result1 = elasticClient.Search<Person>(x => x.Size(size));
				foreach (var item in result1.Documents)
				{
					 var  obj=item as T;
					 result.Add(obj);
				}
				return result;
			}
			catch (Exception)
			{

				throw;
			}
下面我把我自己简单封装的类  贴出来 
public class ESHelper<T> where T : class, new()
	{

		public ESHelper(string indexName)
		{
			Build(indexName);
		}

		public static ElasticClient elasticClient { get; set; }
		/// <summary>
		/// 创建连接
		/// </summary>
		/// <param name="indexName"></param>
		public static void Build(string indexName) {
			try
			{
				Uri uri = new Uri("http://localhost:9200/");
				ConnectionSettings connectionSettings = new ConnectionSettings(uri);
				connectionSettings.DefaultIndex(indexName);
				
				elasticClient = new ElasticClient(connectionSettings);
			}
			catch (Exception)
			{

				throw;
			}
		}
		#region 索引操作
		/// <summary>
		/// 删除索引
		/// </summary>
		/// <param name="indexName"></param>
		/// <returns></returns>
		public  bool DeleteIndex(string indexName)
		{
			try
			{
				var deleteIndexResponse = elasticClient.Indices.Delete(Indices.Parse(indexName));
				if (deleteIndexResponse.ApiCall.Success == true)
				{
					return true;
				}
				return false;
			}
			catch (Exception)
			{

				throw;
			}
		}


		/// <summary>
		/// 判断索引是否存在
		/// </summary>
		/// <param name="indexName"></param>
		public  bool ExistIndex(string indexName)
		{
			try
			{
				return elasticClient.Indices.Exists(indexName).Exists;
			}
			catch (Exception)
			{

				throw;
			}

		}


		/// <summary>
		/// 创建索引
		/// </summary>
		/// <returns></returns>
		public  bool CreateIndex(string indexName)
		{
			try
			{
				var createByResponceInfo = elasticClient.Indices.Create(indexName);
				if (createByResponceInfo.ApiCall.HttpStatusCode.Value == 200 && !string.IsNullOrWhiteSpace(createByResponceInfo.Index))
				{
					return true;
				}
				else
				{
					return false;
				}
			}
			catch (Exception)
			{

				throw;
			}
		}
		#endregion

		#region 文档操作

		/// <summary>
		/// 是否存在文档
		/// </summary>
		/// <returns></returns>
		public  bool ExisitDocument() {
			try
			{
				T t = new T();
				Id id = Id.From<T>(t);
				return elasticClient.DocumentExists<T>(id).Exists;
			}
			catch (Exception)
			{

				throw;
			}

		}

		/// <summary>
		/// 创建文档  添加数据
		/// </summary>
		/// <returns></returns>
		public  bool CreateDocument(T t) {
			try
			{
				var createResponce = elasticClient.CreateDocument<T>(t);
				if (createResponce.ApiCall.Success == true && createResponce.Result.ToString() == "Created") {

					return true;
				}
				return false;
			}
			catch (Exception)
			{

				throw;
			}

		}

		/// <summary>
		/// 批量创建文档 批量添加数据
		/// </summary>
		/// <returns></returns>
		public bool BatchInsertDocument(List<T> lists) {
			try
			{
				
				var createResponce = elasticClient.CreateDocument<List<T>>(lists);
				if (createResponce.ApiCall.Success == true && createResponce.Result.ToString() == "Created")
				{

					return true;
				}
				return false;
			}
			catch (Exception)
			{

				throw;
			}
		}

		/// <summary>
		/// 删除文档
		/// </summary>
		/// <returns></returns>
		public  bool DeleteDocument(int index) {
			try
			{
			  return elasticClient.DeleteByQuery<T>(x => x.From(index)).ApiCall.Success==true? true:false;
			}
			catch (Exception)
			{

				throw;
			}
		}

		#endregion

		#region 查询操作
		//获取单个数据
		public  T GetSingleData(int id)
		{
			try
			{
				DocumentPath<T> documentPath = new Nest.DocumentPath<T>(id);
				GetResponse<T> result = elasticClient.Get(documentPath);
				//GetResponse<Person> result = elasticClient.Get<Person>(new GetRequest(indexName, 10));
				return result.Source as T;
			}
			catch (Exception)
			{

				throw;
			}
			
		}

		/// <summary>
		/// 分页获取
		/// </summary>
		/// <param name="size"></param>
		/// <returns></returns>
		public  List<T> GetDataBySize(int size = 10) {
			List<T> result = new List<T>();
			try
			{
				var result1 = elasticClient.Search<Person>(x => x.Size(size));
				foreach (var item in result1.Documents)
				{
					 var  obj=item as T;
					 result.Add(obj);
				}
				return result;
			}
			catch (Exception)
			{

				throw;
			}
		
		}
		#endregion
	}

因为这是我自己摸索 写的 很多东西 还不太懂 因为 es最重要的就是查询 后续我会把 es相关查询 就行 补充

深入解析.NET中的Elasticsearch(ES)使用与实战 Elasticsearch是一个开源的分布式搜索引擎,基于Apache Lucene构建。它能够快速地存储、搜索和分析大量数据。分布式:数据分布在多个节点上,支持水平扩展。实时性:数据几乎可以实时地被索引和搜索。高可用性:通过副本机制保证数据的高可用性。强大的查询能力:支持复杂的查询和聚合操作。本文详细介绍了如何在.NET中使用Elasticsearch进行数据存储、检索和分析。通过Elasticsearch的分布式特性和强大的查询能力,我们可以轻松地处理大规模数据,并构建高效的搜索应用。 阅读详情

相关推荐

Elasticsearch的介绍 以及使用python操作es详细步骤

一. 什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful w

数据知道的博客 4万+

.Net使用ElasticSearch

.Net使用ElasticSearch

黄瓜炒鸡蛋的博客 2326

Redis简介和项目应用

内存优先架构简介Redis的读写操作都是在内存中执行的,计算机内存的读写速度极快,比机械硬盘的读写快很多,因此也会比MySql采用机械读写的方式性能更高。但是这样会产生一个问题,当Redis重启之后,内存中的数据就会丢失,为了保证数据不会因为服务器重启而丢失,Redis实现了数据持久化的机制,这个机制会把数据存储到磁盘中,当服务器重启的时候,能够从磁盘中恢复原有的数据。

人工智能、机器学习 759

.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

需要注意的一点是,写入ES里面,ES默认有1秒时间是查不出来的,需要1秒以后才可以查到记录,对于实时性不是特别高,所以不适合用于做数据库,但是用于对实时性要求不高的数据来说,问题就不大了。注意,包版本需要和使用的ES的版本保持一致,可以避免因为不兼容所导致的一些问题。使用两种方法都可以查询,看个人喜好了~~ 同时,如果需要做一些可视化报表什么的,也都是可以使用的。没有wesky索引,可以开始启动程序(备注:正常使用期间不需要删除索引,会导致写入的数据丢失,我此处只是为了方便效果验证使用)。

xwnxwn的专栏 1726

FPGA远程升级必备:STARTUPE2原语控制Flash的避坑指南

本文深入解析了FPGA远程升级中STARTUPE2原语的核心价值与配置策略,详细介绍了其在QSPI Flash接口设计中的应用。通过Vivado工具和原语控制,开发者可以高效实现安全可靠的远程固件升级,提升系统稳定性和升级效率。

k8l9m0n的博客 399

MAX30102心率血样模块在STM32F103芯片的程序说明

我希望你已经安装好了Keil MDK5这个软件,也安装了M3内核,可以编译一些STM32F103的一些项目下载程序后步骤: 1-按照下图找到IIC.uvprojx并打开(途中唯一绿色那个图标) 2-编译一次 3-确保0错误,0警告,下图所示 4-点击目标选项,然后找到STM32F103C8,再点debug–CMSIS****(我实际用的JTAG,用不了,选择这个CMSIS****即可)下图所示 5-下图所示,看看你的串口找到了没,找到了就点左下角的OK 6-按图上传到开发板 7-MAX30102接线方法

weixin_51357422的博客 5801

ElasticSearch学习第二篇:.net core中使用ES

前言 在上一篇文章《ElasticSearch学习第一篇:windows环境下安装使用》,我已经简单介绍了关于ES的安装部署及一些概念性的东西,还有一些简单的增删改查操作。本文主要也是做一些增删改查操作,不同的是,我们要通过代码来实现。 .net关于ES的客户端 在.net客户端中,官网给我们提供了两种客户端 ...

shaojiayong的博客 6105

duilib 之 事件--bubbled冒泡事件应用、通用点击事件、进入离开事件、XML样式中直接添加事件

1. box 绑定点击事件 ui::Box *pSmallVideoBox = (ui::Box*)FindControl(L"rightBox"); if (pSmallVideoBox) { auto SwitchVideo = [this](ui::EventArgs* param){ m_bSecScreenIsScale = m_bMainScre...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 973

elasticsearch.net search入门使用指南中文版(翻译)

elasticsearch.net search入门使用指南中文版(翻译)

我的地盘 3925

RK3568平台(KBuild篇)KBuild编译体系

从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这和过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。kbuild,即 kernel build,用于编译 Linux 内核文件。

weixin_49303682的博客 349

C语言实现惯性导航初始对准全部核心代码

惯性导航初始对准包括间接粗对准和卡尔曼滤波精对准,其中。为基于卡尔曼滤波的精对准,其中。

十八与她的博客 2284

Elasticsearch.Net使用(一)【入门篇】

首先去官网下载Elasticsearch 2.3.4安装包,解压后,在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令 elasticsearch插件elasticsearch-head安装: bin目录下执行命令plugin -install mobz/elasticsearch-head 然后开始.net编程,构建控制台应用程序 Progra

极客神殿 1万+

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(二)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 1664

elasticsearch.net search入门使用指南中文版

原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层且灵活的客户端,它不在意你如何的构建自己的请求和响应。它非常抽象,因此所有的Elasticsearch API被表示为方法,没有太多关于你想如何构建json/request/respon...

weixin_30426957的博客 564

2025目标检测新方向:弱监督目标检测的最新论文研究与应用

2025目标检测新方向:弱监督目标检测的最新论文研究与应用 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年弱监督目标检测新方向,阐述其基础概念,包括弱监督学习定义、标注形式及面临的定位不准等挑战。介绍最新论文研究的多种算法,如基于点标注的算法等,还涉及相关模型、应用领域,以及评价指标、数据集、实现工具框架,分析未来趋势与补充挑战及解决方案,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

.NET Core 下使用 ElasticSearch

快速入门Elasticsearch 快速入门ElasticSearch是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。Lucene 可以说是当下最...

阿星Plus 3564

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

应用NUnit软件进行.NET程序测试初步

      在.NET环境中进行单元测试,有许多软件可以完成,NUnit就是其中之一。这是一款与JUnit齐名的,同属于xUnit家族的单元测试软件。在http://www.NUnit.org可以免费得到这款软件。NUnit 应用程序提供了一个用于编写单元测试的框架,以及一个运行这些测试和查看结果的图形界面。      这里说的是一个初次使用NUnit会遇到的问题。      安装完NUnit

::: 移动互联网时代开发者 ::: 1943

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android-OpenGL ES For Android lesson

英文地址:http://www.learnopengles.com/android-lesson-one-getting-started/ 中文学习地址:http://blog.csdn.net/niu_gao/article/details/8533126

u014385442的专栏 569

在.Net环境下使用elasticsearch实现大数据量的搜索

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。El...

zls365365的博客 468

Elasticsearch简介及SpringBoot整合ES实例

Elasticsearch简介 1.1 Elasticsearch(以下简称ES)定义 Elasticsearch 是一个开源的搜索引擎。 建立在全文搜索引擎库 Apache Lucene 基础之上。它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。 Elasticsearch ...

weixin_42184707的博客 8861

搜索引擎ElasticSearch分布式搜索和分析引擎学习,SpringBoot整合ES个人心得

ElasticSearch搜索和分析引擎学习笔记

HakerDONG的博客 2680

ElasticSearch入门(1)——了解ES

ElasticSearch入门(1)——了解ES 文章目录ElasticSearch入门(1)——了解ES1. Lucene2. ElasticSearch1. ES开启跨域2. 索引 - index3. 类型 - type4. 文档 - document5. 分片 - shared6. 集群 - cluster7. 节点 - Node3. IK分词器1. ik_smart - 最少切分2. ik_max_word - 最细粒度划分3. 增加自定义字典4. 请求方式1. PUT2. GET3. POST5.

qq_40788718的博客 2427
上一篇: SqlServer数据库常用连接字符串
_徐林
博客等级 码龄9年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值