.NET Core 下使用 ElasticSearch
1|0快速入门
1|1Elasticsearch 快速入门
ElasticSearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库,无论是开源还是私有。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。
ElasticSearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段 可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
官方客户端在Java、.NET、PHP、Python、Ruby、Nodejs和许多其他语言中都是可用的。根据 DB-Engines 的排名显示,ElasticSearch 是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
1|2ES 开发指南
中文文档请参考:《Elasticsearch: 权威指南》
英文文档请参考:《Elasticsearch Reference》
下载: https://www.elastic.co/cn/downloads/
1|3ES API文档
1|4Logstash
1|5Kibana DevTools 快捷键
- Ctrl+i 自动缩进
- Ctrl+Enter 提交
- Down 打开自动补全菜单
- Enter 或 Tab 选中项自动补全
- Esc 关闭补全菜单
pretty = true
在任意的查询字符串中增加pretty参数,会让 Elasticsearch 美化输出(pretty-print)JSON响应以便更加容易阅读。
1|6Kibana 命令
1|7集群状态
1|8检索文档
1|9删除文档
1|10创建索引
数据迁移本质是索引的重建,重建索引不会尝试设置目标索引,它不会复制源索引的设置。 所以在操作之前设置目标索引,包括设置映射,分片数,副本等。
1|11数据迁移
Reindex from Remoteedit
使用时需要在elasticsearch.yml中配置 reindex.remote.whitelist 属性。可以设置多组(例如,lotherhost:9200, another:9200, 127.0.10.*:9200, localhost:*)。
具体使用可参考 Reindex from Remoteedit
Elasticsearch-Dump
Elasticsearch-Dump是一个elasticsearch数据导入导出开源工具包。安装、迁移相关执行可以在相同可用区的云主机上进行,使用方便。
需要node环境,npm安装elasticdump
elasticdump 命令其他参数使用参考 Elasticdump Options
1|12深度分页
- elasticsearch 超过10000条数据的分页查询会报异常,官方提供了 search_after 的方式来支持
- search_after 要求提供上一页两个必须的排序标识
2|0安装
- docker下安装Elasticsearch
3|0接入使用
新建一个webapi项目,然后安装两个组件。
通过NEST
来实现操作Elasticsearch,开源地址:https://github.com/elastic/elasticsearch-net,同时将swagger也添加以下方便后面调用接口。
接下来演示一个对Elasticsearch的增删改查操作。
添加实体类:VisitLog.cs
。
确定好实体类后,来包装一下Elasticsearch,简单封装一个基类用于仓储的集成使用。
添加一个接口类IElasticsearchProvider
。
在ElasticsearchProvider
中实现IElasticsearchProvider
接口。
添加Elasticsearch仓储基类,ElasticsearchRepositoryBase
。
也就是一个抽象类,当我们集成此基类的时候需要重写protected abstract string IndexName { get; }
,指定IndexName。
完成上面简单封装,现在新建一个IVisitLogRepository
仓储接口,里面添加四个方法:
所以接下来不用说你也知道改干嘛,实现这个仓储接口,添加VisitLogRepository
,代码如下:
现在去写接口,添加一个VisitLogController
API控制器,代码如下:
大功告成,最后一步不要忘记在Startup.cs
中添加服务,不然无法使用依赖注入。
一切准备就绪,现在满怀期待的运行项目,打开swagger界面。
按照新增、更新、删除、查询的顺序依次调用接口。新增可以多来几次,因为默认是没有数据的,多添加一点可以测试分页是否ok,这里就不再演示了。
如果你有安装kibana,现在可以满怀惊喜的去查看一下刚才添加的数据。
可以看到,数据已经安安静静的躺在这里了。
本篇简单介绍Elasticsearch在.NET Core中的使用,关于检索数据还有很多语法没有体现出来,如果在开发中需要用到,可以参考官方的各种数据查询示例:https://github.com/elastic/elasticsearch-net/tree/master/examples
__EOF__

本文链接:https://www.cnblogs.com/meowv/p/13614455.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?