elasticsearch_.net_client_nest2.x_到_5.x常用方法属性差异
目录:
Elasticsearch.Net、NEST 交流群:523061899
变更1 字段类型string
- 2.x中仅有String类型,可设置是否分词、是否索引及分词使用的分词器。
- 5.x中拆分为Keyword类型与Text类型,Keyword 不分词,可设置是否索引;Text分词,可设置是否索引及分词使用的分词器。
[String(Name = "Name",Index = FieldIndexOption.NotAnalyzed)]
public string Name { get; set; } [String(Name = "Dic", Index = FieldIndexOption.Analyzed,Analyzer = "ik_max_word")] /// <summary>
/// keyword 不分词
/// </summary>
[Keyword(Name = "Name", Index = true)]
public string Name { get; set; } /// <summary>
/// text 分词,Analyzer = "ik_max_word"
/// </summary>
[Text(Name = "Dic", Index = true, Analyzer = "ik_max_word")]
public string Dic { get; set; }注:5.x已将string标记为过时特性,下个版本将移除;
变更2 滚动扫描获取全量数据
滚动扫描支持并行执行提高获取数据效率;
2.x
public void SearchScanScroll(string indexName)
{
string scrollid = "";
var result = _client.Search<TestModel2>(s => s.Index(indexName).Query(q => q.MatchAll())
.Size()
//todo:2x中的SearchType.Scan,5.x移除
.SearchType(SearchType.Scan)
.Scroll("1m"));
scrollid = result.ScrollId;
int count = ;
while (true)
{
//得到滚动扫描的id
//执行滚动扫描得到数据 返回数据量是 result.Shards.Successful*size(查询成功的分片数*size)
var result1 = _client.Scroll<TestModel2>("1m", scrollid);
if(result1.Documents==null || !result1.Documents.Any())
break;
foreach (var info in result1.Documents)
{
count++;
Console.WriteLine(info.Id+" - "+ count);
}
//得到新的id
scrollid = result1.ScrollId;
}
}5.x
Action<int> sc1 = (id) =>
{
string scrollid = "";
//todo:5.x 多了Slice设置 移除SearchType.Scan
var result = _client.Search<TestModel5>(s => s.Index(indexName).Query(q => q.MatchAll())
.Size()
.Sort(st=>st.Descending(ds=>ds.Id))
.Scroll("1m")
//id从0开始 0,1,2...
//length=max
//例:max=3 id=0,id=1,id=2
.Slice(sl => sl.Id(id).Max())
); //得到滚动扫描的id
scrollid = result.ScrollId;
foreach (var info in result.Documents)
{
Console.WriteLine(info.Id + " - " + " -批次count " + result.Documents.Count + " - 线程"+Thread.CurrentThread.ManagedThreadId);
}
while (true)
{
//执行滚动扫描得到数据 返回数据量是 result.Shards.Successful*size(查询成功的分片数*size)
var result1 = _client.Scroll<TestModel5>("1m", scrollid);
if (result1.Documents == null || !result1.Documents.Any())
break;
foreach (var info in result1.Documents)
{
Console.WriteLine(info.Id + " - " +" -批次count "+ result1.Documents.Count+ " - 线程" + Thread.CurrentThread.ManagedThreadId);
}
//得到新的id
scrollid = result1.ScrollId;
}
};
var t1= Task.Factory.StartNew(() => { sc1(); });
var t2= Task.Factory.StartNew(() => { sc1(); });
var t3= Task.Factory.StartNew(() => { sc1(); });
t1.Wait();
t2.Wait();
t3.Wait();注:5.x 增加了Slice设置可并行拉取全量数据,移除SearchType.Scan,首次查询Search时也返回结果,2.x中设置SearchType.Scan首次Search只返回ScrollId。
注:5.x中新增深度分页方案深度分页
分组结果对象 Nest.KeyedBucket
- 2.x KeyedBucket
- 5.x KeyedBucket<object>
聚合结果解析
2.x
var vendorIdGroup = (BucketAggregate)result.Aggregations["Group_Group"];
foreach (var bucket1 in vendorIdGroup.Items)
{
//todo:2.x KeyedBucket
var bucket = (KeyedBucket)bucket1;
var maxPrice = ((ValueAggregate)bucket.Aggregations["Dvalue_Max"]).Value;
}5.x
var vendorIdGroup = (BucketAggregate)result.Aggregations["Group_Group"];
foreach (var bucket1 in vendorIdGroup.Items)
{
//todo:5.x KeyedBucket<T>
var bucket = (KeyedBucket<object>) bucket1;
var maxPrice = ((ValueAggregate)bucket.Aggregations["Dvalue_Max"]).Value;
}其它
一些新的特性或接口会持续补充。
elasticsearch_.net_client_nest2.x_到_5.x常用方法属性差异的更多相关文章
- 【转载】Response对象的作用以及常用方法属性
Response对象是Asp.Net应用程序中非常重要的一个内置对象,其作用为负责将服务器执行好的信息输出给客户端,即作用主要为响应客户端请求并将服务器的响应返回给用户,在页面的临时跳转中,也可使用R ...
- xcode UIView常用方法属性动画
常见属性: @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 @property(nonatomic,readonly,copy) ...
- alt属性和title属性差异---终于分清楚了!
凡是接触过前端的开发者,相信都会接触到<img>标签,自然alt title更是不会陌生,但对他们真正的含义和使用方法,你确定了解吗? 参考: http://www.junchenwu.c ...
- android:layout_gravity和android:gravity属性差异
gravity的中文意思就是"重心",就是表示view横向和纵向的停靠位置 android:gravity:是对view控件本身来说的,是用来设置view本身的文本应该显示在vie ...
- Elasticsearch .Net Client NEST使用说明 2.x
Elasticsearch .net client NEST使用说明 2.x Elasticsearch.Net与NEST是Elasticsearch为C#提供的一套客户端驱动,方便C#调用Elast ...
- Elasticsearch .net client NEST 5.x 使用总结
目录: Elasticsearch .net client NEST 5.x 使用总结 elasticsearch_.net_client_nest2.x_到_5.x常用方法属性差异 Elastics ...
- Elasticsearch .net client NEST使用说明 2.x -更新版
Elasticsearch .net client NEST使用说明 目录: Elasticsearch .net client NEST 5.x 使用总结 elasticsearch_.net_cl ...
- JavaScript 面向对象编程(四)的常用方法、属性总结
面向对象的属性.方法.操作符总结,都是干货.想深入掌握面向对象的程序设计模式,必须掌握一下知识点.下列知识点注重于实现,原理还请借鉴<javascript高级程序设计> (基于javasc ...
- FileSystemObject对象及常用方法
FSO 对象模式包含在 Scripting 类型库中,该库位于 Scrrun.dll 文件中.因而,要使用 FSO 对象模式,必须把 Scrrun.dll 放在 Web 服务器的适当系统目录中. 要用 ...
随机推荐
- 【感悟】一次不太好的寻找bug的体验,RecyclerView
最近在网上看Android的学习视频的时候,视频中使用了RecyclerView这个组件,我按照视频中的指示对RecyclerView进行配置. 程序编译通过了,但是在运行时程序会崩溃.我复制了日志里 ...
- Java多线中基础知识整理
Java多线程中相关术语: 一.Java多线程原则 1.原子性:一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行.一般使用线程同步或者Lock锁来确保. 2.可见性(J ...
- 使用re开发python计算器
#!/usr/bin/env python import reimport functools def minus_operator_handler(formula): '''处理一些特殊的减号运算' ...
- layui 重加载
tableIns.reload({ page: { curr: 1 //重新从第 1 页开始 } }); tableIns为layui 表格定义的函数 var tableIns= table.rend ...
- 如何去掉wordpress后台notice提示窗口
我们在安装完wordpress插件后,有些会在后台页面弹出一个提示你去收费升级pro版,如下图所示,这无可厚非,基础功能可以免费用,如果要用高级功能可以升级.有些朋友觉得基础功能够用了,又不想看到弹出 ...
- vue中动态样式不起作用? scoped了解一下
vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化,但是在使用动态样式时,样式会不起作用.可以先去掉scoped
- [TJOI2009]猜数字
题目描述 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n,满足对于任意 ...
- redis----------linux和mac如何安装redis和启动,关闭
1.打开官网https://redis.io/download.官网有安装命令 2.以下是我的执行过程截图 执行完官网给的命令以后,再执行 make PREFIX=/usr/local/redis ...
- Go 初体验 - 错误与异常处理 - recover和panic
先看代码: 输出: 内建函数panic可以让我们人为地产生一个运行时恐慌.不过,这种致命错误是可以被恢复的.在Go语言中,内建函数recover就可以做到这一点. 实际上,内建函数panic和reco ...
- 配置php环境的一个nginx.conf
文件:nginx.conf 内容: #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/err ...