博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记 NEST 的一次简单使用
阅读量:4297 次
发布时间:2019-05-27

本文共 1522 字,大约阅读时间需要 5 分钟。

目录

简单来说

Elasticsearch 是一个分布式的全文搜索、分析引擎。当然,他很强大,可以做很多事情,但这暂时不重要。类似的东西,近期接触了 Solr,都是与 JSON 对象(当然,这是个很印象性的描述,它们当然可以呈现成不一样的数据格式,但大差不差)打交道。而 NEST 是一个高层的 .Net 客户端,是基于 Elasticsearch 的 API 们的。需要注意的是,NEST 通过属性类解析出的返回,是_source filed 内的诸项,而与 _source 同级的 _index 以及 _type 等可用于查询限定,比如:

var settings = new ConnectionSettings(new Uri("http://127.0.0.1:9200"))                .DefaultIndex("test")                .DefaultTypeName("data");

依据如上 settings 建立 ElasticClient,则搜索所用的数据源范围被限定在所有 _index 字段值为 “test” 、_type 字段值为 “data” 的数据中。

具体使用

本次简单使用仅包括查询,因为本次仅用到了查询。人类是一种靠事件驱动的类。

建立连接

在查询前,首先得建立一个 ElasticClient 实例,而当 Elasticsearch 跑在远端或者调整活动端口等时,则需要在实例化 ElasticClient 时,提供一个 ConnectionSettings 实例。具体如下:

var settings = new ConnectionSettings(new Uri("http://localhost:9200"))                .DefaultIndex("test")                .DefaultTypeName("data");var client =  new ElasticClient(settings);

当有多个 Uri 时,可建立连接池:

var uris = new[]{
new Uri("http://localhost:9200"), new Uri("http://localhost:9201"), new Uri("http://localhost:9202"),};var settings = new ConnectionSettings(uris) .DefaultIndex("test") .DefaultTypeName("data");var client = new ElasticClient(settings);

当然,连接池有好几种(它们总不止一种),出于对英语的热爱,我并没有深究。

查询

查询也有好多种写法,热爱,没深究。我采用了这种:

var searchResponse = client.Search
(s => s.From(0) .Size(10).Query(q => q .Match(m => m .Field(f => f.certainID) .Query("1234567"))));

其中,NodeObject 人如其名,是个属性类;From 指从查询到的数据的第几条(0是1,业界共识)开始返回,而 Size 则限定返回的数据条数,二者相当于框定了一个区间。

就酱。

参考资料

[1]

[2]

转载地址:http://xqbws.baihongyu.com/

你可能感兴趣的文章
微服务网关 Spring Cloud Gateway
查看>>
SpringCloud Feign的使用方式(一)
查看>>
SpringCloud Feign的使用方式(二)
查看>>
关于Vue-cli+ElementUI项目 打包时排除Vue和ElementUI
查看>>
Vue 路由懒加载根据根路由合并chunk块
查看>>
vue中 不更新视图 四种解决方法
查看>>
MySQL 查看执行计划
查看>>
OpenGL ES 3.0(四)图元、VBO、VAO
查看>>
OpenGL ES 3.0(五)纹理
查看>>
OpenGL ES 3.0(八)实现带水印的相机预览功能
查看>>
OpenGL ES 3.0(九)实现美颜相机功能
查看>>
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>