.net core+elasticsearch实战案例

Posted 开发Web那点事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net core+elasticsearch实战案例相关的知识,希望对你有一定的参考价值。

接上一篇这次我们来说说elasticsearch如何在.net core中的使用,通过一个地图搜索的实战案例来让大家快速入门!这里有个坑需要注意使用NEST客户端的时候,添加geo_point经纬度数据的时候,格式必须为{"lat":223,"lon":2323}这种格式,本人亲测过,有可能是NEST7.9这个版本有bug,我使用[lon,lat]这个格式是没办法反序列化的。


一、安装NEST客户端类库(官网有2个类库-低级的Elasticsearch.Net和高级的NEST,实际上NEST是基于Elasticsearch.Net的)

二、单例注入elasticsearchclient

.net core+elasticsearch实战案例

三、查询录入一些测试数据进去并查询

          ISearchResponse<TestEntity> data = null; try { data =await this._elasticClient.SearchAsync<TestEntity>(s => s.Source(true) .ScriptFields(sf=>sf.ScriptField("dist",sd=>sd.Source("doc['location'].arcDistance(params.lat,params.lon) * 0.001").Lang("painless").Params(new Dictionary<string, object> { ["lat"]= 39.91416 ,["lon"]= 116.402688 }))) .Query(q => q.FunctionScore(fs => fs.Query(fsq => fsq.MatchAll()) .Functions(fs => fs.GaussGeoLocation(geo => geo.Origin(new GeoLocation(39.91416, 116.402688)) .Offset("5km") .Scale("10km") .Field(fd => fd.Location))) .BoostMode(FunctionBoostMode.Replace) ) ) .Sort(ss => ss.GeoDistance(g => g.Field(p => p.Location).DistanceType(GeoDistanceType.Plane).Order(SortOrder.Ascending).Unit(DistanceUnit.Kilometers).Points(new GeoLocation(39.91416, 116.402688)))) .Size(15) ); } catch (Exception ex) {                 LogHelper.Log(ex); throw;            } return Ok(data.Documents);

打完收工!

以上是关于.net core+elasticsearch实战案例的主要内容,如果未能解决你的问题,请参考以下文章

.net core 与ELK安装Elasticsearch可视化工具

.net core使用NLog+Elasticsearch记录日志

十四.net core(.NET 6)搭建ElasticSearch(ES)系列之给ElasticSearch添加SQL插件和浏览器插件

在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch

.NET Core接入ElasticSearch 7.5

Logging with ElasticSearch, Kibana, ASP.NET Core and Docker