Elasticsearch .net 客户端条件拼接查询
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 客户端条件拼接查询的更多相关文章
- SpringDataJPA+QueryDSL玩转态动条件/投影查询
在本文之前,本应当专门有一篇博客讲解SpringDataJPA使用自带的Specification+JpaSpecificationExecutor去说明如何玩条件查询,但是看到新奇.编码更简单易懂的 ...
- mybatis 使用记录(二) 动态拼接查询条件
2016-12-16 阅读项目代码时,在项目的xml文件中发现如下写法: SELECT student_user_id FROM tbr_student_class WHERE 1=1 <if ...
- Oracle,Mysql ,SQL Server 三大数据库带参数的模糊查询, 拼接查询条件问题
最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用 mybatis: 1. Oracle 中使 ...
- 查询拼接SQL语句,多条件模糊查询
多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...
- ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)
ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源, ...
- elasticsearch组合多条件查询实现restful api以及java代码实现
原文:http://blog.java1234.com/blog/articles/372.html elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中 ...
- Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询
在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...
- ElasticSearch(七):Java操作elasticsearch基于smartcn中文分词查询
package com.gxy.ESChap01; import java.net.InetAddress; import org.elasticsearch.action.search.Search ...
- Python Elasticsearch批量操作客户端
基于Python实现的Elasticsearch批量操作客户端 by:授客 QQ:1033553122 1. 代码用途 1 2. 测试环境 1 3. 使用方法 1 3.1 配置ES服务器信息 1 ...
随机推荐
- 【July】从头到尾彻底理解KMP
从头到尾彻底理解KMP 作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进. 1. 引言 本KMP原文最初写于2年多前的2011 ...
- 使ie6的漂浮栏滑动右侧滚动条的时候不抖动
body {_background-attachment: fixed;}html {_background-image: url(about:blank);}
- 简明CSS属性:定位
简明CSS属性:定位 第一话 定位 (Positioning) 关键词:position/z-index/top/bottom/right/left/clip POSITION 该属性用来决定元素在页 ...
- HashMap源码剖析
HashMap源码剖析 无论是在平时的练习还是项目当中,HashMap用的是非常的广,真可谓无处不在.平时用的时候只知道HashMap是用来存储键值对的,却不知道它的底层是如何实现的. 一.HashM ...
- go实现排序的链表
go实现排序的链表 Posted on 2013-08-14 23:25 mac的学习笔记 阅读(224) 评论(0) 编辑 收藏 链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和 ...
- 实用的android颜色配置表(亮瞎尼的双眼)
android开发中,常常会用到color.xml颜色配置,好的颜色配置可以让尼的应用让人看起来赏心悦目! 不罗嗦,上图先 该工程已经罗列了常用的颜色配置 附上工程链接:http://download ...
- MFC控件(8):command button与syslink control
在VS 2008里MFC多了4种控件,分别是 split buttons ,command button , syslink controls和 network address controls. s ...
- 安卓开发16:Spinner 下拉列表控件
Spinner 下拉列表控件 创建一个activity_main.xml文件: <RelativeLayout xmlns:android="http://schemas.androi ...
- 作为IT行业计算机从业人士,不要做“邻居盖新房,你就是背后放火的那种人”
金华-普通人(214103872) 21:03:01 尽扯蛋 颇有点凤姐的营销方式 横瓜(601069289) 21:05:16 不服气 你搞一个下面的类似软件出来 http://www.s ...
- 【汇编】字符串处理指令 stosb、lodsb、movsw、scasb、rep
一.字符串处理指令 (1) lodsb.lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI (2) stosb.stosw:把AL或AX中的数据装入ES:DI指向的 ...