{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"to_province": "河南"
}
},
{
"match_phrase": {
"to_city": "信阳市"
}
},
{
"match_phrase": {
"to_district": "新县"
}
},
{
"bool": {
"should": [
{
"match_phrase": {
"from_city": "商丘市"
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "from_city"
}
}
}
}
]
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}

查询条件:前面3个是and关系,后面4和5是或者关系,

            ElasticsearchProvider provider = new ElasticsearchProvider();
ElasticsearchProvider es = new ElasticsearchProvider(); var elasticsearchPage = new ElasticsearchPage<AreaJiBao>(AreaJiBao.IndexName)
{
PageIndex = ,
PageSize =
}; var searchRequest = elasticsearchPage.InitSearchRequest();
var predicateList = new List<IPredicate>
{
Predicates.Field<AreaJiBao>(x => x.ToProvince, ExpressOperator.Like, "河南省"),
Predicates.Field<AreaJiBao>(x => x.ToCity, ExpressOperator.Like, "信阳市"),
Predicates.Field<AreaJiBao>(x => x.ToCity, ExpressOperator.Like, "新县")
};
// 前面3个是 and 关系
var predicate = Predicates.Group(GroupOperator.And, predicateList.ToArray()); // FromCity要不包含商丘市,要不就为空值
var predicateListExists = new List<IPredicate>
{
Predicates.Field<AreaJiBao>(x => x.FromCity, ExpressOperator.MustNotExists, null)
};
var predicateExists = Predicates.Group(GroupOperator.Or, predicateListExists.ToArray());
var predicateListTerm = new List<IPredicate>
{
Predicates.Field<AreaJiBao>(x => x.FromCity, ExpressOperator.Like, "商丘市")
};
var predicateOr = Predicates.Group(GroupOperator.Or, predicateListTerm.ToArray());
var predicatecCombinationChild = new List<IPredicate> { predicateExists, predicateOr };
var pgCombinationChild = Predicates.Group(GroupOperator.Or, predicatecCombinationChild.ToArray()); // 查询
var predicatecCombination = new List<IPredicate> { predicate, pgCombinationChild };
var pgCombination = Predicates.Group(GroupOperator.And, predicatecCombination.ToArray());
searchRequest.InitQueryContainer(pgCombination);
var data = provider.SearchPage(searchRequest);
foreach (var item in data.Documents)
{
Console.WriteLine($"{item.Id}");
}

Elasticsearch.Net 多层嵌套的逻辑实现的更多相关文章

  1. angularjs ui-view多视口多层嵌套路由配置

    最近研究了一下ui-view多层嵌套,整理了一下 1.最简单的ui-view用法 html部分: <ul class="nav navbar-nav"> <li ...

  2. ASP.NET提取多层嵌套json数据的方法

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...

  3. 元素多层嵌套,JS获取问题

    如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来,让我们瞧瞧. HTML: <!DOCTYPE html> <ht ...

  4. .net(c#)提取多层嵌套的JSON

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  5. require或include相对路径多层嵌套引发的问题

    require或include相对路径多层嵌套引发的问题   php中require/include 包含相对路径的解决办法 在PHP中require,include一个文件时,大都是用相对路径,是个 ...

  6. c#多层嵌套Json

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  7. Android 动态生成布局 (多层嵌套)

    Android 除了能够载入xml文件,显示布局外,也能够代码生成布局,并通过setContentView(View view)方法显示布局.单独的一层布局,如一个主布局加一个控件(如Button\i ...

  8. 【转】一个工具类(可以控制多层嵌套的movieClip)

    好多人也应该遇到和我一样的问题,当设计师给了我们一个多层嵌套的movieClip时,我们在写代码时无法将movieClip完全停止掉,主要是基于好多movieClip有深层嵌套,主时间轴不在最上层导致 ...

  9. 提取多层嵌套Json数据

    在.net 2.0中提取这样的json {"name":"lily","age":23,"addr":{"ci ...

随机推荐

  1. centOS7下Spark安装配置

    环境说明: 操作系统: centos7 64位 3台 centos7-1 192.168.190.130 master centos7-2 192.168.190.129 slave1 centos7 ...

  2. mysql获取某个表中除了某个字段名外的所有字段名

    现一个表中有很多字段,但我不想要其中某一个字段,手打出来字段太多,不方便. SELECT GROUP_CONCAT( column_name SEPARATOR ',' ) FROM informat ...

  3. 操作系统,时间片轮转算法的C语言实现Round Robin

    #include "windows.h" #include <conio.h> #include <stdlib.h> #include <fstre ...

  4. 关于如何使用xposed来hook微信软件

     安卓端  难点有两个  收款码的生成和到帐监听   需要源码加 2442982910

  5. 【English】五、颜色相关

    一.常见颜色 黑色    black    白色    white    蓝色    blue    橙色    orange    黄色    yellow        灰色    gray   ...

  6. MyDAL - .UpdateAsync() 之 .Set() 使用

    索引: 目录索引 一.API 列表 1.Set<M, F>(Expression<Func<M, F>> propertyFunc, F newVal) 如: .S ...

  7. ZOJ 2480 - Simplest Task in Windows

    Simplest Task in Windows Time Limit: 2 Seconds      Memory Limit: 65536 KB A typical windows platfor ...

  8. 基本MVVM 和 ICommand用法举例(转)

    引言 在本贴中,我们将学习WPF Commands. Commands 可以很好地与 MVVM 模式 (Model- View-ViewModel)结合在一起.我们也将看到,视图(view)实际上是怎 ...

  9. 为什么区块链和加密行业需要 Web 3?

    为什么区块链和加密行业需要 Web 3? “由于人们都想从互联网上获得好处,互联网已经演变成了一个导致不公平和分裂的引擎,它被强大的力量所支配,并且任由其摆布.“——万维网之父.互联网先驱 Tim B ...

  10. 【题解】P2922 [USACO08DEC]秘密消息Secret Message

    \(\text{Tags}\) 字典树,统计 题意: 给出两组\(\text{0/1}\)串\(\text{A,B}\),求解\(\text{A}\)中某串是\(\text{B}\)中某串的前缀,和\ ...