ElasticSearch 关于搜索,有哪些类型的搜索

news2024/9/9 0:48:35

在Elasticsearch中,根据不同的需求和场景,有多种类型的搜索可供使用。下面是几种常见的搜索类型及其应用场景:

1. 全文搜索 (Full-text Search)

  • 描述:全文搜索是最常用的搜索类型,它允许用户在文档中搜索特定的单词或短语。
  • 示例:使用match查询来执行全文搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "match": {
          "name": "wireless headphones"
        }
      }
    }
    

2. 模糊搜索 (Fuzzy Search)

  • 描述:模糊搜索允许用户输入与索引中的词汇单元有轻微差异的查询,如拼写错误。
  • 示例:使用fuzzy查询来执行模糊搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "fuzzy": {
          "name": {
            "value": "bluethoot",
            "fuzziness": "2"
          }
        }
      }
    }
    

3. 前缀搜索 (Prefix Search)

  • 描述:前缀搜索用于查找以特定前缀开头的词汇单元。
  • 示例:使用prefix查询来执行前缀搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "prefix": {
          "name": "bluetooth"
        }
      }
    }
    

4. 词组搜索 (Phrase Search)

  • 描述:词组搜索用于查找确切的词组。
  • 示例:使用match_phrase查询来执行词组搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "match_phrase": {
          "description": "wireless headphones"
        }
      }
    }
    

5. 通配符搜索 (Wildcard Search)

  • 描述:通配符搜索允许使用通配符*?来匹配词汇单元。
  • 示例:使用wildcard查询来执行通配符搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "wildcard": {
          "name": "bluetooth*"
        }
      }
    }
    

6. 范围搜索 (Range Search)

  • 描述:范围搜索用于查找数值或日期字段在指定范围内的文档。
  • 示例:使用range查询来执行范围搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "range": {
          "price": {
            "gte": 100,
            "lte": 200
          }
        }
      }
    }
    

7. 多字段搜索 (Multi-field Search)

  • 描述:多字段搜索允许同时在多个字段中进行搜索。
  • 示例:使用multi_match查询来执行多字段搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "multi_match": {
          "query": "wireless headphones",
          "fields": ["name", "description"]
        }
      }
    }
    

8. 布尔搜索 (Boolean Search)

  • 描述:布尔搜索允许组合多个查询条件,如must, should, must_not
  • 示例:使用bool查询来执行布尔搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "bool": {
          "must": [
            { "match": { "name": "wireless" } },
            { "match": { "category": "electronics" } }
          ],
          "should": [
            { "match": { "description": "long battery life" } }
          ]
        }
      }
    }
    

9. 存在搜索 (Exists Search)

  • 描述:存在搜索用于查找具有特定字段的文档。
  • 示例:使用exists查询来执行存在搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "exists": {
          "field": "warranty_period"
        }
      }
    }
    

10. 排序搜索 (Sorting Search)

  • 描述:排序搜索允许根据特定字段对结果进行排序。
  • 示例:使用sort参数来执行排序搜索。
  • 示例代码
    GET /products/_search
    {
      "query": {
        "match_all": {}
      },
      "sort": [
        { "price": { "order": "asc" } }
      ]
    }
    

11. 聚合搜索 (Aggregation Search)

  • 描述:聚合搜索用于统计和汇总数据。
  • 示例:使用aggregations来执行聚合搜索。
  • 示例代码
    GET /products/_search
    {
      "aggs": {
        "categories": {
          "terms": {
            "field": "category.keyword"
          }
        }
      }
    }
    

总结

以上是Elasticsearch中的一些主要搜索类型。你可以根据你的需求选择合适的搜索类型来优化查询性能和满足特定的业务需求。如果你有具体的场景或问题需要讨论,请随时提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArchLinux部署waydroid

在Arch Linux系统上部署Waydroid运行Android APP 文章目录 在Arch Linux系统上部署Waydroid运行Android APP1. 安装要求2. 本机环境3. 安装 Waydroid4. 网络配置5.注册Google设备6. 运行效果图 Waydroid是Anbox配合Haliun技术开发的LXC Android容器,可在GUN/Linux系…

C语言中的指针基础

文章目录 🍊自我介绍🍊地址🍊C语言中的指针 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是小珑也要变强&am…

Spring Boot 3 + Resilience4j 简单入门 + Redis Cache 整合

1. 项目结构 2. Maven依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</version><relativePath/> <!-- lookup parent from repository --&…

CSRF Token 原理

CSRF 攻击 CSRF 攻击成功的关键是&#xff0c;恶意网站让浏览器自动发起一个请求&#xff0c;这个请求会自动携带 cookie &#xff0c;正常网站拿到 cookie 后会认为这是正常用户&#xff0c;就允许请求。 防范 如果在请求中加一个字段&#xff08;CSRF Token&#xff09;&am…

C++笔记之指针基础

函数重载:(C++特性) 定义: C++允许函数重名,但是参数列表要有区分 在相同的作用域定义同名的函数,但是它们的参数要有所区分,这样的多个函数构成重载关系 objdump -d test.exe >log.txt 将test.exe反汇编并将结果重定向到log.txt 文件中 ,然后在 log.txt中找到定…

学习网络安全 为什么Linux首择Kali Linux? 以及如何正确的使用Kali Linux

1.什么是kali linux&#xff1f; Kali Linux是一款基于Debian的Linux发行版&#xff0c;主要用于网络安全测试和渗透测试。它由全球顶尖的安全专家和黑客社区维护开发&#xff0c;提供了丰富的工具和资源&#xff0c;用于测试安全性、漏洞利用和渗透测试。此外&#xff0c;Kal…

MySQL 性能调优

文章目录 一. MySQL调优金字塔1. 架构调优2. MySQL调优3. 硬件和OS调优4. 小结 二. 查询性能调优三. 慢查询1. 概念2. 优化数据访问3. 请求了不需要数据&#xff0c;怎么做4. 是否在扫描额外的记录5. 慢查询相关配置 & 日志位置6. 小结 四. 查询优化器五. 实现调优手段 一.…

24、Python之面向对象:责任与自由,私有属性真的有必要吗

引言 前面我们进一步介绍了类定义中属性的使用&#xff0c;今天我们对中关于属性私有化的话题稍微展开聊一下&#xff0c;顺便稍微理解一下Python设计的相关理念。 访问级别 在其他编程语言中&#xff0c;比如Java&#xff0c;关于类中的属性和方法通过关键字定义明确的访问级…

1、仓颉工程基础操作 cjpm

文章目录 1. 仓颉工程创建方式2. cjpm2.1 init 初始化工程2.2 run 运行工程 1. 仓颉工程创建方式 使用 cangjie studio 通过cangjie studio 创建 使用vscode插件 通过 VSCode 命令面板创建仓颉工程通过可视化界面创建仓颉工程 cjpm 注&#xff1a;具体使用参考官方文档&#…

探索分布式光伏运维系统的组成 需要几步呢?

前言 随着光伏发电的不断发展&#xff0c;对于光伏发电监控系统的需求也日益迫切&#xff0c;“互联网”时代&#xff0c;“互联网”的理念已经转化为科技生产的动力&#xff0c;促进了产业的升级发展&#xff0c;本文结合“互联网”技术提出了一种针对分散光伏发电站运行数据…

浅谈Devops

1.什么是Devops DevopsDev&#xff08;Development&#xff09;Ops&#xff08;Operation&#xff09; DevOps&#xff08;Development和Operations的混合词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#xff09;”…

asp.net mvc 三层架构开发商城系统需要前台页面代完善

一般会后端开发&#xff0c;都不太想写前台界面&#xff0c;这套系统做完本来想开源&#xff0c;需要前台界面&#xff0c;后台已开发&#xff0c;有需求的朋友&#xff0c;可以开发个前端界面完善一下&#xff0c;有的话可以私聊发给我啊

The Llama 3 Herd of Models 第6部分推理部分全文

第1,2,3部分 介绍,概览和预训练 第4部分 后训练 第5部分 结果 6 Inference 推理 我们研究了两种主要技术来提高Llama 3405b模型的推理效率:(1)管道并行化和(2)FP8量化。我们已经公开发布了FP8量化的实现。 6.1 Pipeline Parallelism 管道并行 当使用BF16数字表示模型参数时…

VirtualBox创建共享磁盘

VirtualBox创建共享磁盘 目录 VirtualBox创建共享磁盘1、划分共享磁盘1.1、【管理】->【工具】->【虚拟介质管理】1.2、【创建】->【VDI&#xff08;VirtualBox 磁盘映像&#xff09;】->【下一步】1.3、【预先分配全部空间】->【下一步】1.4、【分配大小】->…

5、springboot3 vue3开发平台-后端- satoken 整合

文章目录 1. 为什么使用sa-token2. 依赖导入jichu2.1 基础依赖引入2.2 redis整合2.3 redis 配置&#xff0c; 使redis能支持中文存储 3. 配置4. 配置使用4.1 权限加载接口实现&#xff0c; 登录实现4.2 配置全局过滤器4.3 登录异常处理 5. 登录测试6. 用户session的获取 1. 为什…

MySQL索引与存储引擎、事物

数据库索引 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址 无须对整个表进行扫描&#xff0c;通过物理地址就可以找到所需数据 是表中一列或者若干列值排序的方法 需要额外的磁盘空间 类型 普通索引 最基本的索引类型&#xff0c;没有唯一性之类的限制 创…

图不连通怎么办?

目录 1.问题 2.连通的相关概念 3.解决方案 C语言示例实现&#xff1a; 1.问题 无论是图的深度还是广度遍历都是从图的某一条边往下走&#xff0c;那么被孤立的结点怎么被遍历到呢&#xff1f; 2.连通的相关概念 连通&#xff1a;如果从V到W存在一条&#xff08;无向&#…

3D魔方游戏制作lua迷你世界

--3D魔方 --星空露珠工作室 --核心脚本来自负负 --1:xy 2:yx 3:xz 4:zx 5:yz 6:zy --4000,0-3 3995-0,3 local trn{ {{5,2},{3,1},{1,2},{1,3},{4,0},{2,2}}, {{3,0},{5,3},{1,3},{1,2},{2,3},{4,1}}, {{4,2},{2,1},{1,1},{1,0},{3,3},{5,1}}, {{2,0},{4,3},{1,0},{1,1},{5,0},…

Web3.js 4.x版本事件监听详解:从HTTP到WebSocket的迁移

项目场景 在一个使用以太坊区块链技术的项目中&#xff0c;需要监听智能合约的事件&#xff0c;以便在事件触发时能够及时响应。项目中使用了web3.js库的4.x版本&#xff0c;节点使用Geth启动&#xff0c;并通过HTTP与节点进行通信。 问题描述 合约DataStorage.sol文件已经定…

华为项目管理工具集

华为项目管理10大模板是一套被广泛认可和使用的项目管理工具集&#xff0c;它包含了在项目管理过程中常用的各种表格和文档模板。这些模板旨在帮助项目经理更有效地规划、执行和监控项目&#xff0c;确保项目的成功交付。 虽然具体的模板内容可能会有所不同&#xff0c;但根据…