Elasticsearch.Net 官网示例的坑

发布日期:2019-10-07

  经过昨天的ElasticSearch 安装,服务以及可以启动了,接下来就可以开发了,找到了官网提供的API以及示例,Es 官方提供的.net 客户端有两个版本一个低级版本: 【Elasticsearch.Net.dll】这个dll文件官方解释无依赖关系的客户端,对于您如何构建和表示您的请求和相应没有任何意见;它足够抽象,因此所有的ElasticSearch API端点都表示为方法,不会妨碍你构建json、reque、response 对象方式,它还带有内置的,可配置、可覆盖的集群故障转移、重试机制。

  另一个高级版本: 【Nest.dll】 是一个高级客户端、具有映射所有请求和响应对象的优势,附带强类型查询DSL,并利用特定的.Net功能,如协变结果和POCO的自动映射;Nest内部包含了Elastic.net 版本;

   

然后两个DLL文件的安装命令如下:

  安装ElasticSearch.net.dll命令:Install-Package Elasticsearch.Net

  安装nest.dll命令:Install-Package NEST

 

命令运行之后,vs 会下载最新版本的dall文件,一定要注意版本号,这个就是后面的大坑,自己好不容易爬出来

 

然后,就开始代码编写了,怎么写?难道写个“hello,word”?NO,NO,刚接触,没办法,只有去抄了,去哪里抄,当然是官网了,官网示例:https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/elasticsearch-net-getting-started.html

,在抄的过程中,一定要理解并加以思考,在实际项目里面灵活运用。

 

为了操作方便,先弄一个Winfrom 程序,拉一个窗体,再来个按钮,触发个Click事件,然后,在添加引用,把刚刚下载的两个Dll文件添加到项目中;好了,一切准备就绪,开始上菜了!

 

代码就不贴了,都是官网示例中的代码;

然后,程序就还没有运行,就报错了,这心情,我擦,这可是刚起步,这可是完全按照官网示例去写的,竟然报错!!!

 

错误提示:people 无法转换为 “Elasticsearch.Net.IndexRequestParameters ”

 

然后就各种途径找解决方案,中午吃饭的时候还在想,这官网真坑,案例都是错的,最后,在浏览官网的时候注意到一个东西,就是菜单选项。.NET API 版本号

 

 

心想,会不会跟版本号有关系,反正找不到解决方法,只有试一试了,然后又去看了下,下载的dll文件;

 

这下,肯定了我的想法,下载的dll版本是6.4.0 的,看的官网示例是5.X 的;

 

然后,把官网示例切换到6.X,然后把官网代码照着写了一遍,然后可以可以成功运行了;来看下运行后的数据结果(插入数据的代码示例);

 

 

 

至此,算是入门了,折腾了那么久,一定要写篇博客记录下,以免别人也遇到这种事情;