第九章:深入搜索--结构化搜索

本文深入探讨Elasticsearch中的高级查询技术,包括精确搜索、组合过滤器、范围查询及处理NULL值的方法。通过具体实例,讲解term查询、bool查询、range查询以及exists和missing过滤器的使用,帮助读者掌握高效数据检索的策略。

一.精确搜索,多个精确搜索

 1.term 查询

    term 查询可以用它处理数字(numbers)、布尔值(Booleans)、日期(dates)以及文本(text).

使用bulk创建文件文档

 POST /my_store/products/_bulk
{ "index": { "_id": 1 }}
{ "price" : 10, "productID" : "XHDK-A-1293-#fJ3" }
{ "index": { "_id": 2 }}
{ "price" : 20, "productID" : "KDKE-A-9947-#kL5" }
{ "index": { "_id": 3 }}
{ "price" : 30, "productID" : "JODL-X-1937-#pV7" }
{ "index": { "_id": 4 }}
{ "price" : 30, "productID" : "QQPX-R-3956-#aD8" }
{ "index": { "_id": 5 }}
{ "price" : 40, "productID" : "你好ds" }

term处理数字 :在 Elasticsearch 的查询表达式(query DSL)中,使用 term 查询会查找我们指定的精确值。

constant_score : 查询以非评分模式

GET /my_store/products/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "price":40
        }
      }
    }
  }
}

term处理文本: 在处理文本的时候,ES的analyze API会把文本才分成一个单词,大写的会变成小写,特殊的字符会进行过滤

例如 :"XHDK-A-1293-#fJ3" 会才分成  "xhdk", "a","1293","fj3"

可以使用 GET /{索引}/_analyze 语法进行查询才分的情况,如下

GET /my_store/_analyze
{
  "field": "productID",
  "text": "XHDK-A-1293-#fJ3"
}

term的文本查询

GET /my_store/products/_search
{
    "query" : {
        "_score" : {
            "filter" : {
                "terms" : {
                    "productID": ["a","你"]
                }
            }
        }
    }
}

2.多个精确搜索

多个精确搜索,只要在 term 后面加个s

GET /my_store/products/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "terms" : {
                    "price" : [20, 30]
                }
            }
        }
    }
}

二.组合过滤器

1.bool查询

bool (布尔)过滤器。 这是个 复合过滤器(compound filter) ,它可以接受多个其他过滤器作为参数,并将这些过滤器结合成各式各样的布尔(逻辑)组合。

bool 过滤器由三部分组成:

{
   "bool" : {
      "must" :     [],
      "should" :   [],
      "must_not" : [],
   }
}

must : 所有的语句都 必须(must) 匹配,与 AND 等价。

must_not : 所有的语句都 不能(must not) 匹配,与 NOT 等价。

should : 至少有一个语句要匹配,与 OR 等价.

如此sql:

SELECT product FROM products

WHERE (price = 20 OR productID = "XHDK-A-1293-#fJ3")

AND (price != 30)

Elasticsearch中用bool表达此sql的语句 如下:

GET /my_store/products/_search
{
   "query" : {
     "constant_score": {
         "filter" : {
            "bool" : {
              "should" : [//自少有一个条件符合
                 { "term" : {"price" : 20}}, 
                 { "term" : {"productID" : "fj3"}} 
              ],
              "must_not" : {//排除条件
                 "term" : {"price" : 30} 
              }
           }
         }
     }
   }
}

三.范围查询

range 查询

range 查询可同时提供包含(inclusive)和不包含(exclusive)这两种范围表达式,可供组合的选项如下:

  • gt: > 大于(greater than)
  • lt: < 小于(less than)
  • gte: >= 大于或等于(greater than or equal to)
  • lte: <= 小于或等于(less than or equal to)

如下事例:

GET /my_store/products/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "range" : {
                    "price" : {
                        "gte" : 20,
                        "lt"  : 40
                    }
                }
            }
        }
    }
}

四.处理NULL值

1.exists 

 exists :判断不是NULL   与sql的 is not null 相同 

 使用ES的exists 表示 tags IS NOT NULL的判断

SELECT tags
FROM   posts
WHERE  tags IS NOT NULL

如下

GET /my_index/posts/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "exists" : { "field" : "tags" }
            }
        }
    }
}

2.missing :判断是NULL   与sql的 is  null 相同 

 使用ES的missing 表示 tags IS  NULL的判断

SELECT tags
FROM   posts
WHERE  tags IS NULL

如下:

GET /my_index/posts/_search
{
    "query" : {
        "constant_score" : {
            "filter": {
                "missing" : { "field" : "tags" }
            }
        }
    }
}

 

 

【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值