ElasticSearch学习4--复杂查询

news/2024/7/7 5:50:31 标签: elasticsearch, 学习, 大数据

1、查询分类

  1. 查询所有:查询出所有数据,一般测试用。例如:match_all
  2. 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:

        match_query 根据单个字段查询
        multi_match_query  根据多个字段查询

        3.精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。例如:

                ids  根据id查询
                range   根据范围查询
                term     精确查询
     4.地理(geo)查询:根据经纬度查询。例如:
                geo_distance   
                geo_bounding_box
     5.复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。例如:
                bool
                function_score

基本语法:

GET /indexName/_search
{
  "query": {
    "查询类型": {
      "查询条件": "条件值"
    }
  }
}

2、查询所有

注意:因为性能问题,查询到的结果页面显示的不是全部。

 3、全文检索查询

match查询

:会对用户输入内容进行分词,然后去倒排索引库检索,只根据一个查询字段中是否包含用户输入的词分词后的词

比如用户输入赎吧安居客,先分词成赎吧和安居客两个词,然后查询fileId字段中包含赎吧和安居客其中任意一个词的文档

 先分词后查询

 multi_match查询

:多个字段查询,也是先对用户输入分词,分词后查询多个字段中任意一处符合即可

如输入B端赎吧,查询字段是 "fields": ["fileId","caseDes"],就是fileId和caseDes中只要有一处包含B端或赎吧即可返回

 copy_to属性

multi_match:根据多个字段查询,参与查询字段越多,查询性能越差,所以常用的是会将常参与查询的字段复制到一个字段中,如下将title字段和content字段拷贝到full_text字段中,查询时仅查询full_text字段即可,full_text字段并不存在,只是一种关联关系,可参与查询

copy_to属性是用来将一个字段的内容复制到另一个字段中的。这样可以实现对同一个文档的多个字段进行索引和搜索,适用于需要对特定字段进行更详细的搜索或分析的情况

PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "copy_to": "full_text"
      },
      "content": {
        "type": "text",
        "copy_to": "full_text"
      },
      "full_text": {
        "type": "text"
      }
    }
  }
}

4、精确查询

term查询


http://www.niftyadmin.cn/n/4979282.html

相关文章

基于相空间重构的混沌背景下微弱信号检测算法matlab仿真,对比SVM,PSO-SVM以及GA-PSO-SVM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 SVM 4.2 PSO-SVM 4.3 GA-PSO-SVM 5.算法完整程序工程 1.算法运行效果图预览 SVM: PSO-SVM: GA-PSO-SVM: 以上仿真图参考文献《基于相空间重构的混沌背景下微弱信号检测方法研究》 2.…

9. 解谜游戏

目录 题目 Description Input Notes 思路 暴力方法 递归法 注意事项 C代码(递归法) 关于DFS 题目 Description 小张是一个密室逃脱爱好者,在密室逃脱的游戏中,你需要解开一系列谜题最终拿到出门的密码。现在小张需要打…

SpringBoot初级开发--加入Log4j进行日志管理打印(6)

日志记录在整个java工程开发中占着很重要的比重,因为很多问题的排查需要通过日志分析才能确认。在SpringBoot中我用得最多的就是log4j这个日志框架。接下来我们具体配置log4j. log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别&#…

【腾讯云Cloud Studio实战训练营】Cloud Studio + iPad,让代码之舞飞扬在指尖

Cloud Studio iPad,让代码之舞飞扬在指尖 妙手偶得,开启神奇之旅立即反馈,一切尽在掌握版本控制,简单易用MetaWork 协作,摸鱼变得不再轻松 ​一直以来,开发者大多都习惯在电脑端开发,而iPad只是…

NFTScan 正式上线 Base NFTScan 浏览器和 NFT API 数据服务

2023 年 8 月 24 号,NFTScan 团队正式对外发布了 Base NFTScan 基础设施,将为 Base 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商,Base 是继 Bitcoin、Ethereum、BNBChain、…

2023最新官网下载安装配置JDK8(1.8u381)的详细步骤

目录 前言 一、下载 二、安装 三、配置环境变量 四、查看 前言 JDK11版本:官网下载JAVA的JDK11版本(下载、安装、配置环境变量)_java11下载_云边的快乐猫的博客-CSDN博客JDK17版本: Java官网下载JDK17版本详细教程&#xff…

13、Vue3 大事件管理系统

一、大事件项目介绍 和 创建 1.1 Vue3 大事件管理系统 在线演示: https://fe-bigevent-web.itheima.net/login 接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 基地址: http://big-event-vue-api-t.i…

HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景二

3.创建其他应用或其他Module的Context 基类Context提供创建其他应用或其他Module的Context的方法为createModuleContext(moduleName:string),创建其他应用或者其他Module的Context,从而通过该Context获取相应的资源信息(例如获取其他Module的…