private Func<SearchDescriptor<BaseTest>, ISearchRequest> ConstructWhere(TestCondition where)
{
Func<SearchDescriptor<BaseTest>, ISearchRequest> result;
List<Func<QueryContainerDescriptor<BaseTest>, QueryContainer>> querys = new List<Func<QueryContainerDescriptor<BaseTest>, QueryContainer>>(); if (where.EduLevel > )
{
querys.Add(o => o.Term(f => f.EduLevel, where.EduLevel));
} if (where.Subject > )
{
querys.Add(o => o.Term(f => f.Subject, where.Subject));
}
if (where.TestLevel > )
{
querys.Add(o => o.Term(f => f.DifficultyLevel, where.TestLevel));
}
if (where.TestType > )
{
querys.Add(o => o.Term(f => f.ExternalType, where.TestType));
}
if (where.Kdgs != null && where.Kdgs.Count > )
{
querys.Add(o => o.Bool(b => b.Should(s => s.Terms(ts => ts.Field(f => f.KnowledgePoints).Terms(where.Kdgs)))));
}
if (where.Chps != null && where.Chps.Count > )
{
querys.Add(o => o.Bool(b => b.Should(s => s.Terms(ts => ts.Field(f => f.Chapters.First().ChapterId).Terms(where.Chps)))));
}
if (where.Year > )
{
querys.Add(o => o.Term(f => f.Year, where.Year));
}
if (!where.SearchStr.IsNullOrEmpty())
{
querys.Add(o => o.Match(m => m.Field(f => f.TextTitle).Query(where.SearchStr)));
}
Func<QueryContainerDescriptor<BaseTest>, QueryContainer> condition =
o => o.Bool(b => b.Must(
querys.ToArray()
));
if (where.SearchStr.IsNullOrEmpty() && !where.order.IsNullOrEmpty())
{
if (where.IsDesc)
{
result =
o => o.Type(_typeName).Query(condition)
.From(where.PageIndex).Size(where.PageSize).Sort(s => s.Descending(where.order));
}
else
{
result =
o => o.Type(_typeName).Query(condition)
.From(where.PageIndex).Size(where.PageSize).Sort(s => s.Ascending(where.order));
}
}
else if(!where.SearchStr.IsNullOrEmpty())
{
result =
o => o.Type(_typeName).Query(condition)
.From(where.PageIndex).Size(where.PageSize);
}
else
{
result =
o => o.Type(_typeName).Query(condition)
.From(where.PageIndex).Size(where.PageSize);
} result += o => o.Source(sc => sc.Include(ic => ic
.Fields(
fd => fd.Oid,
fd => fd.TId,
fd => fd.ExternalTypeName,
fd => fd.ExternalType,
fd => fd.DataVersion,
fd => fd.Year,
fd => fd.DifficultyLevel,
fd => fd.Subject,
fd => fd.EduLevel,
fd => fd.HtmlTitle,
fd => fd.BuildPaperCount,
fd => fd.TrainCount,
fd => fd.CorrectCount,
fd => fd.ModifyDateTime,
fd => fd.LastReferenceTitle,
fd => fd.LastReferencePaperId,
fd => fd.ReferenceCount
)));
return result;
}

Elasticsearch .net 客户端条件拼接查询的更多相关文章

  1. SpringDataJPA+QueryDSL玩转态动条件/投影查询

    在本文之前,本应当专门有一篇博客讲解SpringDataJPA使用自带的Specification+JpaSpecificationExecutor去说明如何玩条件查询,但是看到新奇.编码更简单易懂的 ...

  2. mybatis 使用记录(二) 动态拼接查询条件

    2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...

  3. Oracle,Mysql ,SQL Server 三大数据库带参数的模糊查询, 拼接查询条件问题

    最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用   mybatis: 1. Oracle 中使 ...

  4. 查询拼接SQL语句,多条件模糊查询

    多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...

  5. ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)

    ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源, ...

  6. elasticsearch组合多条件查询实现restful api以及java代码实现

    原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...

  7. Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询

    在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...

  8. ElasticSearch(七):Java操作elasticsearch基于smartcn中文分词查询

    package com.gxy.ESChap01; import java.net.InetAddress; import org.elasticsearch.action.search.Search ...

  9. Python Elasticsearch批量操作客户端

    基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122   1. 代码用途 1 2. 测试环境 1 3. 使用方法 1 3.1 配置ES服务器信息 1 ...

随机推荐

  1. 序列化和反序列化的几种方式(DataContractSerializer)

    序列化和反序列化的几种方式(DataContractSerializer) DataContractSerializer 类 使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档. 无法 ...

  2. Service Manager 2012

    部署Service Manager 2012遇到的2个问题 上周装了个Service Manager 2012学习,以便完善System Center整个解决方案,在部署期间遇到2个问题,花了我不少时 ...

  3. Make Things Move -- Javascript html5版(三)三角函数形式的动画

    角度制和弧度制 生活中通常是用角度度来理解的,代码里都是用弧度制来计算. 角度转弧度:DEG_TO_RAD = Math.PI / 180 弧度装角度:RAD_TO_DEG = 180 / Math. ...

  4. Twitter Storm:单机环境的安装与配置

    Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...

  5. 代码契约CodeContract(八)

    代码契约(Code Contract):它并不是语言本身的新功能,而是一些额外的工具,帮助人们控制代码边界. 代码契约之于C#,就相当于诗词歌赋之于语言. --- C# in Depth 一,概述 1 ...

  6. Ext JS4百强应用: 用grid.plugin.CellEditing做高级查询 --第10强

    Ext JS4,用grid.plugin.CellEditing做高级查询: 写了90%,界面出来了,小兴奋就贴出来,还有细节要调整,基本能用. 代码: Ext.define('chenghao.ad ...

  7. 在Xbox和Hololens 上部署、调试UWP App

    在Windows 10 Device 上,UWP App可以快速部署进行调试.PC(平板)和Phone就不用多说,网上的文章比较多.今天专门介绍一下怎么在Xbox One和HoloLens上部署调试U ...

  8. knn分类算法学习

    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的 ...

  9. AngularJS 实现页面滚动到底自动加载数据的功能

    要实现这个功能,可以通过https://github.com/sroze/ngInfiniteScroll这个第三方控件来实现.步骤如下: 1. 下载ng-infinite-scroll.js程序ht ...

  10. phpstorm9整合本地apache和豆沙绿主题设置(附资源)

    ♣phpstorm9下载(安装包和注册码) ♣phpstorm9自带apache和自定义apache服务器 ♣phpstorm9豆沙绿主题设置(附我的主题包) 说明:如果还未安装apache和php7 ...