首页 > 其他分享 >elasticsearch 常用搜索总结

elasticsearch 常用搜索总结

时间:2024-11-06 10:57:39浏览次数:1  
标签:总结 search 匹配 查询 field 搜索 query elasticsearch match

match_all

它不包含任何条件,通常用于返回索引中的所有文档

GET /index/_search
{
    "query":{
        "match_all":{}
    }
}

match

用于执行全文本搜索。它可以对文本字段进行模糊匹配,支持分词器处理后的词项匹配

GET /index/_search
{
    "query":{
        "match":{
            "field_name":{
                "query":"search words", // 搜索匹配词
                "operator":"or",        // 控制多个词项之间的逻辑关系。可选值为 or(默认)和 and  
                "analyzer": "standard", // 指定在查询时使用的分析器。如果未指定,默认使用字段的映射定义中的分析器。
                "minimum_should_match": "50%" // 控制匹配的最小词项数量。可以是绝对数量或百分比。
            }
        }
    }
}

match_phrase

用于执行短语匹配查询。与普通的 match 查询不同,match_phrase 查询要求匹配的词项必须按指定的顺序出现,并且中间不能有其他词项。这使得 match_phrase 查询非常适合用于精确匹配短语

GET /index/_search
{
    "query":{
        "match_phrase":{
            "field_name":{
                "query":"search words", // 搜索匹配词
                "analyzer": "standard", // 指定在查询时使用的分析器。如果未指定,默认使用字段的映射定义中的分析器。
                "slop": 1               // 控制允许的词项之间的间隔。默认值为 0,表示词项必须紧挨着出现 (注:索引和搜索项使用不同的分词器可能会产生不同的词项,导致无法匹配)
            }
        }
    }
}

multi_match

查询可以在多个字段中进行搜索,返回包含匹配内容的文档

GET /index/_search
{
    "query":{
       "multi_match": {
            "query": "search words",         // 搜索匹配词
            "fields": ["field1", "field2"],  // 要搜索的字段列表
            "type": "best_fields"            // 匹配类型 可选值包括 best_fields(默认)、most_fields、cross_fields 和 phrase
        }
    }
    
}

best_fields:  默认类型。尝试在单个字段中找到最佳匹配。如果某个字段中的匹配度最高,则该字段的得分会被用作最终得分
most_fields:  尝试在多个字段中找到匹配,并将所有匹配字段的得分相加
cross_fields: 将所有字段视为一个整体进行匹配。适合字段之间有相似内容的情况
phrase:       要求匹配的词项按顺序出现,形成一个短语

term

用于精确查询,不进行分词处理,而是直接匹配字段中的完整值(包括大小写和空格)适用于 keyword 类型的字段

GET /index/_search
{
    "query":{
        "term": {
            "field_name": {
                "value":"search words" // 搜索匹配词
            }
        }
    }
}

注:

  1. 如果 term 匹配的字段为 text 类型,可以使用field_name.keyword 进行搜索
  2. term 处理多值字段(数组)时,查询是包含不是等于

terms

主要用于多值精确匹配,terms 查询在需要查找包含多个特定值的文档时非常有用,常用于过滤和聚合操作

GET /index/_search
{
    "query":{
        "terms": {
            "field_name": ["search word1","search word2"], // 多个搜索匹配词
             "minimum_should_match": 2                     // 指定至少需要匹配的值的数量或比例
        }
    }
}

terms_set

用于处理多值字段(如数组字段),并允许你根据字段中值的数量来动态地应用查询条件

GET /index/_search
{
  "query": {
    "terms_set": {
      "field_name": {
        "terms": [ "value1", "value2", ... ],
        "minimum_should_match": 1,                               // 固定的最小匹配值 整数或字符串(百分比)
        "minimum_should_match_field": "min_match_field",         // 指定一个字段,该字段的值将用作 minimum_should_match 的阈值
        "minimum_should_match_script": {
          "source": "params.num_terms * params.percent / 100"    // 使用脚本来动态计算 minimum_should_match 的值  params.num_terms: terms 列表中的值数量  params.percent: 可以在脚本中使用的百分比值
        }
      }
    }
  }
}

range

用于查找在指定范围内的文档的查询类型。它可以用于数值、日期、字符串等多种数据类型的字段

GET /index/_search
{
    "query":{
        "range": {
            "field_name":{
                "gte": 10,
                "lte": 20
            }
        }
    }
}

exists

查找包含特定字段的文档的查询类型。它不关心字段的具体值,只检查字段是否存在

GET /index/_search
{
    "query":{
        "exists": {
            "field":"field"
        }
    }
}

fuzzy

用于执行模糊搜索的查询类型。它允许用户在搜索时容忍一定的拼写错误,从而找到与查询词相似的文档

GET /index/_search
{
    "query":{
        "fuzzy": {
            "field_name":"search words"
        }
    }
}

bool query 组合搜索

用于组合多个查询条件,以实现复杂的搜索逻辑

GET /index/_search
{
  "query": {
    "bool": {
      "must": [ /* 必须满足的所有查询条件 */ ],
      "should": [ /* 至少满足一个的查询条件 */ ], (minimum_should_match 指定 should 条件中至少需要满足的条件数量)
      "must_not": [ /* 必须不满足的所有查询条件 */ ],
      "filter": [ /* 过滤条件,不影响评分 */ ]
    }
  }
}

标签:总结,search,匹配,查询,field,搜索,query,elasticsearch,match
From: https://www.cnblogs.com/xingzr/p/18529208

相关文章

  • AOT使用经验总结
    一、引言站长接触AOT已有3个月之久,此前在《好消息:NET9X86AOT的突破-支持老旧Win7与XP环境》一文中就有所提及。在这段时间里,站长使用Avalonia开发的项目也成功完成了AOT发布测试。然而,这一过程并非一帆风顺。站长在项目功能完成大半部分才开始进行AOT测试,期间遭遇......
  • 2024-2025-1 20241310 《计算机基础与程序设计》第7周学习总结
    2024-2025-120241310《计算机基础与程序设计》第7周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第一周作业这个作业的目标自学教材《计算机科学概论》(第七版)第8章并完成云班课测......
  • 排序算法详细总结
    算法定义:算法是解决特定问题的明确步骤集合。算法的效率通常用时间复杂度和空间复杂度来衡量。排序算法定义:排序算法是计算机科学中用于对元素序列进行排序的一系列算法。排序算法在各种应用中都非常常见,从简单的数据处理到复杂的数据库和搜索引擎优化。分类:冒泡排序(Bubb......
  • 从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值
    目录从模糊搜索到语义搜索的进化之路——探索Chroma在大模型中的应用价值一、引言二、实现语义搜索的数据库Chroma1、语义搜索是什么2、Chroma语义搜索的原理三、如何在项目中应用Chroma1、Chroma的实际应用场景2、安装Chroma(python环境) 3、创建嵌入索引4、查......
  • maven知识点总结
    Maven知识总结一、简介Maven是一个项目管理和构建自动化工具。它基于项目对象模型(POM)的概念,将项目的构建、报告和文档等流程标准化。二、核心概念POM(ProjectObjectModel)是Maven的核心,以xml文件形式存在。它包含了项目的基本信息,如项目坐标(groupId、artifactId、version),......
  • 一款功能强大的开源文档管理系统,将物理文档转换为可搜索的在线档案,实现无纸化办公工具
    大家好,今天给大家分享一个开源的文档管理系统Paperless-ngx,旨在将物理文档转换为可搜索的在线档案,以实现无纸化办公和高效的文档管理。项目介绍Paperless-ngx是一个开源的文档管理系统,旨在帮助用户实现无纸化办公。它允许用户扫描、上传和存储文档,并且通过强大的索引和搜索......
  • CSP2024 - J/S 年度总结大会报告
    CSP2024-J/S年度总结大会报告J组预估和总分都为:\(100+100+100+15=315.\)\(T_1,T_2\)还挺弱智的,就是没有\(15\min\)内\(A\)掉。\(T_3\)想了\(1h\)的完全背包做法加上\(1h\)的调试,真的慢(本质是对于\(dp\)没有深刻理解)。\(T_4\)是一个\(dp\),考场上没有想出来......
  • NOIP模拟(flandre、meirin、sakuya、scarlet) - 模拟赛总结
    flandre做得挺久的,大约做了\(\rm1h+\)。首先,选出来的序列一定是升序的,因为交换升序序列中的任意两个都不可能让「感觉效果」更高。然后来看选那些数组成这个序列。接下来是我赛时的想法:如果全为正数,那么自然正数全部都得选。需要考虑的是负数的情况。首先,选择一个负数不仅......
  • 与zoomeye类似的搜索引擎有哪些?
    ZOOMEYE,学安全的人应该都不会太陌生,一个专注于网络空间的搜索引擎,能够扫描和索引全球范围内的设备、服务以及网络信息,提供有关互联网设备的详细信息。那么还有没有和ZOOMEYE类似的搜索引擎呢?当然是有的啦!我找到了几个和ZOOMEYE功能类似的搜索引擎:1.Shodan。2.360网络空间资产......
  • CSP2024 总结
    CSP2024总结目标第一题要写出来第二题尽量写出来,若写不出来就尽量把能拿的暴力和特殊性质都拿了第三题写出暴力与特殊性质第四题尽量写出暴力预计:180+场上情况刚开始10分钟用指针把T1给写出来了然后去看后面的题刚看到T2感觉不太会,于是打算写特殊性质A,B1.5个小......