架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 95969|回复: 35

[资料] 【实战】.net/c# 通过NEST调用elasticsearch搜索[附源码]

[复制链接]
发表于 2018-12-20 17:32:53 | 显示全部楼层 |阅读模式
ElasticSearch:

简称ES,是一款基于Lucene的接近实时的搜索平台,它提供了一个分布式的全文搜索引擎,使用RESTful作为API接口,通过简单的Get,Post等操作来对索引和数据进行索引和查询等操作。


必备知识:

【实战】Centos 7 安装部署elasticsearch-6.5.2教程
https://www.itsvse.com/thread-6173-1-1.html
(出处: 架构师_程序员)
【实战】elasticsearch-6.5.2安装elasticsearch-head插件
https://www.itsvse.com/thread-6190-1-1.html
(出处: 架构师_程序员)
【实战】elasticsearch-6.5.2安装elasticsearch-analysis-ik教程
https://www.itsvse.com/thread-6191-1-1.html
(出处: 架构师_程序员)

安装:

NEST可以用过nuget安装,命令如下:



.net版本最低要求4.6,详细说明如下:https://github.com/elastic/elasticsearch-net/issues/3334

嗨,我们确实放弃了.netstandard1.3的.NET 4.5支持,net46是新的基线。

我们这样做是为了让我们可以开始介绍netcoreapp2.1 TFM并专注于将所有性能工作带到客户端。

你能告诉我们你的环境吗?

.NET 4.5从2012年开始,到2014年仅有4.5.2从微软支持。 在某些时候,我们需要做出艰难的决定,以便放弃4.5.2,这样我们就可以更专注于当前和更新的.NET版本。 就像我们在几年前放弃.NET 3.5一样,这并非易事。


创建索引:

如果index 不存在 使用如下方式 在创建 index 的 同时 创建 mapping

向接口发送put请求,json数据如下:


返回:

{
"acknowledged": true,
"shards_acknowledged": true,
"index": "test1"
}

如下图:

QQ截图20181220165718.jpg

添加文档:

其实就是添加数据,相当于数据库的行,我采集了一些163的新闻,成功添加,共45条,如下图:

QQ截图20181220170555.jpg

通过elasticsearch-head插件看来查看添加的数据。

QQ截图20181220170837.jpg

手动添加一条带有html代码的数据,put内容如下:

QQ截图20181220171030.jpg

我们插入一条带有html标签的数据,是为了测试高亮功能,是否把原有的html、js代码进行转义,否则会造成xss攻击等。

搜索:

通过软件搜索“男子”、“test”等关键词,会出现正确的搜索结果,并且显示post的请求内容,方便我们调试,如下:

QQ截图20181220171841.jpg QQ截图20181220171823.jpg

搜索test关键词,发现记录所包含的html代码都被成功转义了!

源码包含新闻txt文件,winform调用elasticsearch源码下载:

游客,如果您要查看本帖隐藏内容请回复





上一篇:初来匝道,服装设计教程分享给大家
下一篇:简单快速的PHP MVC 框架 CodeIgniter
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-12-24 11:03:23 | 显示全部楼层
用nest创建索引代码:
模型:

查看mapping映射:http://ip:9200/test2/_mapping?pretty



码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-12-28 10:10:50 | 显示全部楼层
Elasticsearch.Net.UnexpectedElasticsearchClientException:'无法将当前JSON对象(例如{“ name”:“ value”})反序列化为类型'System.Int64',因为该类型需要JSON基本值(例如,字符串,数字,布尔值,null)正确反序列化。要解决此错误,可以将JSON更改为JSON基本值(例如,字符串,数字,布尔值,null),或者更改反序列化类型,使其成为普通的.NET类型(例如,不像整数那样的原始类型,而不是集合类型) (例如数组或列表),可以从JSON对象反序列化。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。路径“ hits.total.value”,第1行,位置113。


I had the same issue, and it seems that NEST 6.6.0 library is not compatible with Elasticsearch 7.0. I had to update NEST to 7.0.0 (alpha at this point).


升级NEST解决了此问题
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-7-22 15:20:56 | 显示全部楼层
1121695511 发表于 2019-7-18 10:27
充了个会员,下载了还是和之前的报一样的错。哎哎。也是查询报错

来纠正一下,程序可以运行,只是跟自己elasticsearch下载的版本不一样导致的
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-12-21 08:45:31 | 显示全部楼层
不错~ 对我来说,全文搜索是个问题
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-12-21 12:09:32 | 显示全部楼层
谢谢分享,来看看
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-5-12 17:22:14 | 显示全部楼层
谢谢楼主。。。。是个好人呀
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-5-12 17:35:00 | 显示全部楼层
下不了。。。。哎。要积分。要流量。。各种要
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-5-28 17:53:48 | 显示全部楼层
感谢楼主分享,学习中!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-6-18 18:12:40 | 显示全部楼层
还好,可以试试用用的。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-6-19 17:28:18 | 显示全部楼层
好人一生平安
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-6-19 18:07:29 | 显示全部楼层
谢谢分享,来看看
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 16:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表