关闭

ELaticSearch——PlainElastic.net.dll 中的JsonNetSerializer

1270人阅读 评论(0) 收藏 举报
分类:

之前为了尽量减少对ES类库的使用,对于ES查询返回的结果,直接使用NewtonJson的json转化器,

结果最后发现搜索结果的Json中有聚合的结果,但是转化成SearchResult<object> 就怎么也看不到FacetResult部分。


因此,寻寻觅觅终于找到原因所在,不过令人头疼的是PlainElastic.net.dll 最新的将facet标注为过期,

  [Obsolete("Facets are deprecated and will be removed in a future release. You are encouraged to migrate to aggregations instead.")]
    public class Facets<T> : QueryBase<Facets<T>>
    {}

但是在SearchResult中还是使用的facet 而不是Aggeragation。这个当前的做法其实是存在风险的,万一彻底去掉了,就需要修改代码部分的实现。

  public class SearchResult<T> : BaseResult
    {
        public int took;
        public bool timed_out;
        public ShardsResult _shards;
        public SearchHits hits;
        public SearchFacets <span style="color:#ff0000;">facets;</span>
        public string _scroll_id;

        public IEnumerable<T> Documents
        {
            get { return hits.hits.Select(hit => hit._source); }
        }
}


 PlainElastic.net.dll 中的json转化器做了特殊的处理,其实使用的也是NewtonJson,只不过添加了几个特殊的转化器。

代码如下:

  public class JsonNetSerializer: IJsonSerializer
    {
        public JsonSerializerSettings Settings { get; set; }


        public JsonNetSerializer()
        {
            Settings = new JsonSerializerSettings();
            Settings.Converters.Add(new IsoDateTimeConverter());
            Settings.Converters.Add(new FacetCreationConverter());
            Settings.NullValueHandling = NullValueHandling.Ignore;
        }


        public string Serialize(object o)
        {
            return JsonConvert.SerializeObject(o, Formatting.None, Settings);
        }

        public object Deserialize(string value, Type type)
        {
            return JsonConvert.DeserializeObject(value, type, Settings);
        }
    }

总而言之,还是用他自己的吧,就不费劲写自己的转化器了 。

另外发现ES还做了异步查询,看来还得重构代码



0
0
查看评论

C# Json序列化工具--Newtonsoft.Json简介和使用

Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址:http://www.newtonsoft.com/json。 功能比较多,效率比较高,官方给出对比数据 50% faster than DataContractJsonSerializer, and 250%...
  • u011127019
  • u011127019
  • 2016-06-18 18:03
  • 14935

plainelastic.net elasticsearch实现搜索业务

本文介绍使用plainelastic elasticsearch先介绍api使用方法,然后给出一个实现搜索业务的一个plainelastic.net实例教程 1、PlainElastic.Net下载 1)源码下载:https://github.com/Yegoroff/PlainElastic.Ne...
  • hezheqiang
  • hezheqiang
  • 2017-10-18 10:42
  • 407

ElasticSearch.net NEST批量创建修改删除索引完整示例

本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例。比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求...
  • qq_18145031
  • qq_18145031
  • 2016-12-02 19:57
  • 3022

ELaticSearch——PlainElastic.net.dll 中的JsonNetSerializer

之前为了尽量减少对ES类库的使用,对于ES查询返回的结果,直接使用NewtonJson的json转化器, 结果最后发现搜索结果的Json中有聚合的结果,但是转化成SearchResult 就怎么也看不到FacetResult部分。 因此,寻寻觅觅终于找到原因所在,不过令人头疼的是Plai...
  • Shiyaru1314
  • Shiyaru1314
  • 2015-12-01 17:26
  • 1270

4.弹性网络( Elastic Net)

ElasticNet 是一种使用L1和L2先验作为正则化矩阵的线性回归模型.这种组合用于只有很少的权重非零的稀疏模型,比如:class:Lasso, 但是又能保持:class:Ridge 的正则化属性.我们可以使用 l1_ratio 参数来调节L1和L2的凸组合(一类特殊的线性组合)。 当多个特征...
  • qq_21904665
  • qq_21904665
  • 2016-08-25 16:45
  • 12424

elaticsearch学习一 基本安装

前言        搜索,一直是一个比较复杂的命题,而我们在实际的业务开发中遇到的大多数问题都是可以通过数据库的like子句实现的,然而,当我们对于搜索的要求越来越高的时候,我们就可以发现我们原有的技术已经hold不住了...
  • wangmeng951011
  • wangmeng951011
  • 2017-05-22 21:30
  • 388

elaticsearch 基本概念

前言        es从某种层面来说,其实也就是一种存储数据媒介,而我们想要学习它。我们就应该首先清楚其保存数据的格式。然而,我却没有自信觉得自己一定会对这些概念的理解足够深入,因此,只能翻一下es官网上的一篇文章了。...
  • wangmeng951011
  • wangmeng951011
  • 2017-06-03 15:36
  • 533

ElasticSearch——常用网址

1. ES官方文档,可作为参考手册。 https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-master.html 2..NET开发 使用API https://github.com/Yegoroff/Pla...
  • Shiyaru1314
  • Shiyaru1314
  • 2016-06-24 10:24
  • 681

如何把数据快速批量添加到Elasticsearch中

http://www.cnblogs.com/hai-ping/p/6068946.html 问题来源 最近新做一个项目,有部分搜索比较频繁的数据,而且量级比较大,预计一两年时间很可能达到100G,项目要求不要存在数据库中,最终出来有两个方案,一个是使用Protocol ...
  • zdy0_2004
  • zdy0_2004
  • 2016-11-16 16:27
  • 976

elaticsearch安装及相关插件

本文转自:http://www.cnblogs.com/huangfox/p/3541300.html 一)安装elasticsearch 1)下载elasticsearch-0.90.10,解压,运行\bin\elasticsearch.bat (windwos) 2)进入http://loca...
  • lanonola
  • lanonola
  • 2016-06-15 13:56
  • 815
    个人资料
    • 访问:467316次
    • 积分:6117
    • 等级:
    • 排名:第4866名
    • 原创:163篇
    • 转载:74篇
    • 译文:16篇
    • 评论:124条
    博客专栏
    最新评论