ElasticSearch返回不同的type的序列化
总体思路是:
利用json序列化的别名方法,反序列化到不同的字段上;
因为别名方法不支持多个别名,所以不得不根据不同的type,定义了多套适配内容。
最终在属性上进行选择。
本示例ElasticSearch返回的json串形如:
{ "took": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"failed":
},
"hits": {
"total": ,
"max_score": 3.4698925,
"hits": [
{
"_index": "user",
"_type": "userinfo",
"_id": "",
"_score": 3.4698925,
"_source": {
"uid": ,
"level":
}
}
,
{
"_index": "user",
"_type": "good",
"_id": "",
"_score": 0.06378032,
"_source": {
"id": ,
"name": "good luck"
}
}
]
} }
using PlainElastic.Net;
using PlainElastic.Net.Queries;
using PlainElastic.Net.Serialization;
using System;
using System.Collections.Generic;
using Newtonsoft.Json; namespace TestQuery
{
[Serializable]
public class Show
{
/* A实体反序列化内容 */
[JsonProperty(PropertyName = "uid")]
private string title_1;
[JsonProperty(PropertyName = "level")]
private string content_1; /* B实体反序列化内容 */
[JsonProperty(PropertyName = "id")]
private string title_2; [JsonProperty(PropertyName = "name")]
private string content_2; /* AB实体反序列化内容汇总返回 */
public string Title
{
get
{
return title_1 ?? title_2;
}
}
public string Content
{
get
{
return content_1 ?? content_2;
}
}
}
class Program
{
static void Main(string[] args)
{
var query = new QueryBuilder<Object>()
.Query(q =>
q.Bool(b =>
b.Should(m =>
m.Term(tm =>
{
tm.Field("uid");
tm.Value("");
return tm;
}).Custom(@"{
""exists"": {
""field"": ""name""
}
}")
)
)
)
.From()
.Size()
//.Sort(s => s.Field(UserInfoField.level, SortDirection.desc))
.BuildBeautified();
Console.WriteLine(query);
List<Show> list = new List<Show>();
var cmd = new SearchCommand("user");
var client = new ElasticConnection("localhost", );
var operationResult = client.Post(cmd, query);
var serializer = new JsonNetSerializer();
var hits = serializer.ToSearchResult<Show>(operationResult).hits;
var serializerResult = hits.hits;
//页面显示实体
//
foreach (var item in serializerResult)
{
list.Add(item._source);
} }
}
}
ElasticSearch返回不同的type的序列化的更多相关文章
- 在mvc返回JSON时出错:序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用 的解决办法
在MVC中返回JSON时出错,序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用. public ActionResul ...
- es报错org.frameworkset.elasticsearch.ElasticSearchException: {"error":{"root_cause":[{"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"}],
今天es在保存数据的时候报错 org.frameworkset.elasticsearch.ElasticSearchException: {"error":{"root ...
- Elasticsearch搜索类型(query type)详解
关于我,邯郸人. 对这类话题感兴趣?欢迎发送邮件至donlianli@126.com 请支持原创http://www.cnblogs.com/donlianli/p/3857500.html e ...
- ES 14 - (底层原理) Elasticsearch内部如何处理不同type的数据
目录 1 type的作用 2 type的底层数据结构 3 探究type的存储结构 3.1 创建索引并配置映射 3.2 添加数据 3.3 查看存储结构 4 关于type的最佳实践 1 type的作用 在 ...
- elasticsearch 之 深入探秘type底层数据结构
1.理论知识 type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立.分词器.field的value,在底层的lucene中建立索引 ...
- ElasticSearch(十一)Elasticsearch清空指定Index/Type数据
POST /index_name/type_name/_delete_by_query?conflicts=proceed { "query": { "match_all ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为json,xml等),但是如果Controller的自动序列化后的结果不是我们想要的该 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json)
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/OpenCoder/p/4628557.html 我们都知道在使用WebApi的时候Controller会自动将Acti ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
随机推荐
- Angular2 模板语法
1. 说明 Angular2的模板用来显示组件外观,作为视图所用,用法和html语法基本一致,最简单的Angular2的模板就是一段html代码.Angular模板语法主要包括以下几个部分: l 直接 ...
- Deep Learning入门视频(上)_一层/两层神经网络code
关于在51CTO上的深度学习入门课程视频(9)中的code进行解释与总结: (1)单层神经网络: #coding:cp936 #建立单层神经网络,训练四个样本, import numpy as np ...
- iOS compare 字符串比较
NSString 比较字符串,我介绍一些常用的方法: NSString *value = @"1234567890"; 比较的方法: [value compare:(NSStrin ...
- 2017 苹果强制https
苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者更高,TLS 是 SSL 新的别称. ② 通讯中的加密套件配置要求支持列出的正向保密. ...
- snprintf 使用注意
#include <iostream> #include <cstdio> // 包含的头文件 using namespace std; int main(int argc, ...
- 《C#高级编程》之委托学习笔记 (转载)
全文摘自 http://www.cnblogs.com/xun126/archive/2010/12/30/1921551.html 写得不错,特意备份!并改正其中的错误代码.. 正文: 最近 ...
- 【leetcode】Factorial Trailing Zeroes
题目描述: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be ...
- [MongoDB]MongoDB的优缺点及与关系型数据库的比较
汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...
- 当年只会C# 所以写C++就成这样了!
这应该是4-5年前了. 当年之会c#敲敲代码也不会C++但深信开发这东西只要思想有了. 只是语法问题. 对于C++这貌似只有大牛才能胜任的,而对于我来说是如此困难. 所以想想办法搞了很多通用类来避免C ...
- POJ 1743 Musical Theme 二分+后缀数组
Musical Theme Description A musical melody is represented as a sequence of N (1<=N<=20000)no ...