ElasticSearch的搜索方式

news/2024/9/22 14:26:06 标签: elasticsearch, 大数据, 搜索引擎

目录

目录

前言

数据准备

文档搜索

一、查询所有文档

二、全文检索

(1)全文检索

(2)自动纠错

三、范围搜索

四、短语检索

五、单词/词组搜索

六、复合搜索


前言

数据准备

PUT /students
{
  "mappings":{
    "properties":{
      "id": {
            "type": "integer",
        "index": true
       },
         "name": {
            "type": "text",
            "store": true,
        "index": true,
            "analyzer": "ik_smart"
         },
      "info": {
            "type": "text",
            "store": true,
        "index": true,
            "analyzer": "ik_smart"
         }
     }
   }
}


POST /students/_doc/
{
 "id":1,
 "name":"程序员",
 "info":"I love you"
}


POST /students/_doc/
{
 "id":2,
 "name":"美羊羊",
 "info":"美羊羊是羊村最漂亮的人"
}


POST /students/_doc/
{
 "id":3,
 "name":"懒羊羊",
 "info":"懒羊羊的成绩不是很好"
}


POST /students/_doc/
{
 "id":4,
 "name":"小灰灰",
 "info":"小灰灰的年纪比较小"
}


POST /students/_doc/
{
 "id":5,
 "name":"沸羊羊",
 "info":"沸羊羊喜欢美羊羊"
}


POST /students/_doc/
{
 "id":6,
 "name":"灰太狼",
 "info":"灰太狼是小灰灰的父亲,每次都会说我一定会回来的"
}

文档搜索

GET /索引/_search
{
    "query":{
    搜索方式:搜索参数
   }
}

——————————————————————————————————————————

一、查询所有文档

{
    "query":{
    "match_all":{}
   }
}

二、全文检索

(1)全文检索

{
    "query":{
    "match":{
      搜索字段:搜索条件
     }
   }
}

(2)自动纠错

注:在搜索时关键词有可能会输入错误,ES搜索提供了自动纠错功能,即ES的模糊查询。使用match方式可以实现模糊查询。模糊查询对中文的支持效果一般,我们使用英文数据测试模糊查询。

{
    "query": {
        "match": {
            "域名": {
            "query": 搜索条件,
            "fuzziness": 最多错误字符数,不能超过2
            }
        }
    }
}

三、范围搜索

范围搜索。对数字类型的字段进行范围搜索

{
    "query":{
    "range":{
      搜索字段:{ 
        "gte":最小值,
        "lte":最大值
       } 
     }
   }
}
gt/lt:大于/小于
gte/lte:大于等于/小于等于

四、短语检索

搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配。

{
    "query":{
    "match_phrase":{
      搜索字段:搜索条件
     }
   }
}

五、单词/词组搜索

term/terms:单词/词组搜索。搜索条件不做任何分词解析,在搜索字段对应的倒排索引中精确匹配

{
    "query":{
    "term":{ 
            搜索字段: 搜索条件
     }
   }
}


{
    "query":{
    "terms":{ 
            搜索字段: [搜索条件1,搜索条件2]
     }
   }
}

六、复合搜索

简单来说就是支持多个条件搜索,有三个:必须满足,满足其中一个,必须都不满足!

GET /索引/_search
{ 
    "query": { 
    "bool": { 
      // 必须满足的条件 
      "must": [ 
                搜索方式:搜索参数,
                搜索方式:搜索参数
       ],
      // 多个条件有任意一个满足即可
      "should": [
                搜索方式:搜索参数,
               搜索方式:搜索参数
           ],
            // 必须不满足的条件
           "must_not":[
               搜索方式:搜索参数,
               搜索方式:搜索参数
           ]
       } 
   } 
}

 举例:

必须有“成绩”关键字,而且id是大于等于1小于等于3(可以多个条件一起的,如必须满足什么,必须不满足什么)

GET /students/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "info":"成绩"
          }
        },
        {
          "range":{
            "id":{
              "gte": 1,
              "lte": 3
            }
          }
        }
      ]
    }
  }
}


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

相关文章

IPsec-VPN中文解释

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…

大数据Flink(一百二十一):Flink CDC基本介绍

文章目录 Flink CDC基本介绍 一、什么是CDC 二、CDC的实现机制 三、​​​​​​​​​​​​​​传统 CDC ETL 分析 四、​​​​​​​​​​​​​​基于 Flink CDC 的 ETL 分析 五、​​​​​​​​​​​​​​什么是 Flink CDC 六、​​​​​​​​​​​​​​…

ARM基础知识点及简单汇编语法

计算机最小系统是一个能启动并运行基本功能的系统,其组成包括: 处理器(CPU):执行指令的核心组件。内存: RAM:存储运行中的程序和数据。ROM:存储引导程序或固件。存储:用…

什么是僵尸进程?

僵尸进程是指已经完成执行但仍在进程表中保留其信息的进程。这种状态通常发生在子进程结束后,父进程尚未读取其退出状态,导致子进程的信息仍保留在系统中。僵尸进程不会消耗系统资源,但如果数量过多,可能会影响系统性能。 当一个…

【前端】ES6:Promise对象和Generator函数

文章目录 1 Promise对象1.1 回调地狱1.2 Promise使用1.3 Promise对象的状态1.4 Promise.all1.5 Promise.race 2 Generator函数2.1 基本语法2.2 异步流程2.2.1 手动版本2.2.2 自动版本 1 Promise对象 Promise是异步编程的一种解决方案,比传统的解决方案回调函数&…

掌控历史:如何通过Git版本管理工具提升你的开发效率

先一览全局: git目录 一.打开git二.git bash的基础命令三.配置git四.仓库搭建五.文件操作和状态六.忽略文件七.gitee的使用1.添加公钥2.创建仓库 八.vs中使用git九.git分支常用命令十.文件差异比较十一.文件回溯和推进十二.合并冲突和消除十三.合并/压缩提交十四.远程仓库推拉十…

如何在webots中搭建一个履带机器人

前期准备 下载webotswebots基本知识 a. 官方文档:Webots documentation: Track b. B站教程:webots-超详细入门教程(2020)_哔哩哔哩_bilibili搭建流程 搭建履带机器人主要使用到了webots中的track节点,这个节点是专门用来定义履带的相关属性,模拟履带运动的 首先,创建一个…

海尔嵌入式硬件校招面试题及参考答案

使用 QT 的经验及对控件和信号与槽机制的了解 我使用 QT 有一段时间了,在项目开发中积累了较为丰富的经验。 QT 中的控件丰富多样,涵盖了各种常见的界面元素需求。例如按钮、文本框、列表框、进度条等。这些控件具有良好的可定制性,可以通过属性设置、样式表等方式来调整外观…