有可能从普通的弹性搜索转移到官方的.net客户端NEST吗
我目前正在使用PlainElastic作为.NET ElasticSearch客户端。 我考虑搬到官方的.NET客户端,Nest 有问题吗有可能从普通的弹性搜索转移到官方的.net客户端NEST吗,.net,elasticsearch,nest,.net,elasticsearch,Nest,我目前正在使用PlainElastic作为.NET ElasticSearch客户端。 我考虑搬到官方的.NET客户端,Nest 有问题吗 NEST支持SSL吗 我们可以做常见的查询吗 如何进行公共聚合? 迁移到鸟巢需要很长时间吗 1.NEST支持SSL/TLS。只需在ConnectionSettings var pool = new SingleNodeConnectionPool(new Uri("https://localhost:9200")); var connectionSettin
1.NEST支持SSL/TLS。只需在
ConnectionSettings
var pool = new SingleNodeConnectionPool(new Uri("https://localhost:9200"));
var connectionSettings = new ConnectionSettings(pool);
var client = new ElasticClient(connectionSettings);
2.NEST支持Elasticsearch公开的所有API,包括整个查询DSL。一个例子
client.Search<Conference>(s => s
.Query(q => q
.Bool(b => b
.Should(sh => sh
.Match(m => m
.Field(f => f.Location)
.Query("Sydney")
), sh => sh
.Match(m => m
.Field(f => f.Location)
.Query("Spektrum")
.Boost(2)
)
)
.Filter(fi => fi
.Term(t => t
.Field(f => f.Name.Suffix("raw"))
.Value("NDC")
)
)
)
)
);
client.Search(s=>s
.Query(q=>q
.Bool(b=>b
.Should(sh=>sh
.Match(m=>m
.Field(f=>f.Location)
.Query(“悉尼”)
),sh=>sh
.Match(m=>m
.Field(f=>f.Location)
.Query(“Spektrum”)
.Boost(2)
)
)
.Filter(fi=>fi
.Term(t=>t
.Field(f=>f.Name.Suffix(“原始”))
.价值(“NDC”)
)
)
)
)
);
NEST具有和等功能,使构造查询更加容易。这是上一个带有运算符重载的查询
client.Search<Conference>(s => s
.Query(q => (q
.Match(m => m
.Field(f => f.Location)
.Query("Sydney")
) || q
.Match(m => m
.Field(f => f.Location)
.Query("Spektrum")
.Boost(2)
)) && +q
.Term(t => t
.Field(f => f.Name.Suffix("raw"))
.Value("NDC")
)
)
);
client.Search(s=>s
.Query(q=>(q
.Match(m=>m
.Field(f=>f.Location)
.Query(“悉尼”)
)| | q
.Match(m=>m
.Field(f=>f.Location)
.Query(“Spektrum”)
.Boost(2)
))&&+q
.Term(t=>t
.Field(f=>f.Name.Suffix(“原始”))
.价值(“NDC”)
)
)
);
3.NEST支持所有聚合。下面是一个相当复杂的针对stackoverflow数据集的查询示例,查看自2015年6月29日创建的标记为“dnx”或“.net core”的问题
对于这些问题,将在tags字段上执行一个测试,但只查看“dnx”和“.net core”标记。在每个学期区间中,执行一次将问题划分为1周的间隔,每个区间中的问题数量和问题编号分别执行一次
var response = client.Search<Question>(s => s
.Size(0)
.Query(q => +q
.Terms(m => m
.Field(f => f.Tags)
.Terms("dnx", ".net-core")
) && +q
.DateRange(r => r
.Field(f => f.CreationDate)
.GreaterThan(new DateTime(2015, 06, 29))
)
)
.Aggregations(a => a
.Terms("tags", t => t
.Field(f => f.Tags)
.Include(@"dnx|\.net\-core")
.Aggregations(sub => sub
.DateHistogram("weekly_questions", dh => dh
.Field(f => f.CreationDate)
.Interval("1w")
.Aggregations(sa => sa
.ValueCount("count_questions", vc => vc
.Field(f => f.Id)
)
.MovingAverage("questions", ma => ma
.BucketsPath("count_questions.value")
.Window(12)
.Model(mo => mo
.HoltWinters(hw => hw
.Type(HoltWintersType.Additive)
)
)
)
)
)
)
)
)
);
var response=client.Search(s=>s
.尺寸(0)
.Query(q=>+q
.术语(m=>m
.Field(f=>f.Tags)
.术语(“dnx”,“.net核心”)
)&&+q
.DateRange(r=>r
.字段(f=>f.CreationDate)
.GreaterThan(新日期时间(2015年6月29日))
)
)
.聚合(a=>a
.术语(“标记”,t=>t
.Field(f=>f.Tags)
.包括(@“dnx\.net \-core”)
.聚合(sub=>sub
.DateHistogram(“每周问题”,dh=>dh
.字段(f=>f.CreationDate)
.间隔(“1w”)
.聚合(sa=>sa
.ValueCount(“计数问题”,vc=>vc
.Field(f=>f.Id)
)
.MovingAverage(“问题”,ma=>ma
.BucketsPath(“计数问题值”)
.窗口(12)
.Model(mo=>mo
.Holtwiners(hw=>hw
.类型(HoltwisterStype.添加剂)
)
)
)
)
)
)
)
)
);