IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch~查询操作~(简单查询、批量查询、匹配查询、模糊查询、精确查询、范围查询、通配符查询、must查询、should查询、过滤查询) -> 正文阅读

[大数据]ElasticSearch~查询操作~(简单查询、批量查询、匹配查询、模糊查询、精确查询、范围查询、通配符查询、must查询、should查询、过滤查询)

一、简单查询

一、查询所有结果

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

二、根据条件查询

GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  }
}

三、排序

GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  },
  "sort":[{
    "age":"desc"
  }]
}

四、指定查询返回结果字段

GET /student_info/_search
{
  "query":{"match_all": {}},
  "_source": ["name","age"]
}

二、批量查询

一、多ID查询

GET /student_info/_search
{
  "query":{
    "ids":{
      "values":[11001,11002,11003]
    }
  }
}

二、单索引批量查询

POST /student_info/_mget
{
  "ids":["11001","11002","11003"]
}

三、跨索引批量查询

GET /_mget
{
  "docs":[
      {
        "_index":"student_info",
        "_id":"11001"
      },
      {
        "_index":"teacher",
        "_id":"1001"
      }
    ]
}

四、跨索引批量查询

GET /_msearch
{"index":"student_info"}
{"query":{"match_all":{}},"from":0,"size":4}
{"index":"teacher"}
{"query":{"match_all":{}}}

三、匹配查询

一、关键词分词查询

先对match里面的字段值进行分词,然后进行查询

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询profession包含 "计算机"和 "技术"的记录

GET /student_info/_search
{
  "query":{
    "match":{
      "profession":"计算机技术"
    }
  }
}
GET /student_info/_search
{
  "query":{
    "match":{
      "profession":"计算机酒店"
    }
  }
}

二、关联查询

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “and”,必须满足全部分词结果。

GET /student_info/_search
{
  "query":{
    "match":{
      "profession": {
        "query":"计算机技术",
        "operator": "and"
      }
    }
  }
}

“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “or”,任意满足其一。

GET /student_info/_search
{
  "query": {
    "match":{
      "profession": {
        "query": "计算机酒店",
        "operator": "or"
      }
    }
  }
}

三、多字段查询

检索内容"我计算机技术" , 会拆词为“我”,“计算机”,“技术”匹配字段profession或desc字段中包含拆出来的词语的结果

GET /student_info/_search
{
  "query":{
    "multi_match": {
      "query": "我计算机技术",
      "fields": ["profession","desc"]
    }
  }
}

四、短语查询

match_phrase短语搜索,要求所有的分词必须同时出现在文档中,同时位置必须紧邻一致。

GET /student_info/_search
{
  "query": {
    "match_phrase": {
      "profession": "计算机科"
    }
  }
}

五、高亮搜索

  • highlight 高亮查找

  • pre_tags 标签前缀

  • post_tags 标签后缀

  • fields 规定的字段,支持多个

  • 注意:如果不声明前缀和后缀,那边默认使用 <em></em>

GET /student_info/_search
{
  "query":{
    "match":{
      "name":"张三"
    }
  },
  "highlight": {
    "pre_tags":"<p class = \"text_high_light\">",
    "post_tags": "</p>",
    "fields": {
      "name":{}
    }
  }
}

六、前缀匹配

GET /student_info/_search
{
  "query": {
    "match_phrase_prefix": {
      "name":"小小"
    }
  }
}

四、模糊查询

GET /student_info/_search
{
  "query":{
    "fuzzy":{
      "name":"张"
    }
  }
}

五、精确查询

term是关键词查询,参数类型type 一般都是是keyword , 精确查询,对查询的值不分词,直接进倒排索引去匹配。

  • term 精确查找(单个)
  • terms 精确查找(多个)
GET /student_info/_search
{
  "query":{
    "term":{
      "name.keyword": "张三"
    }
  }
}

terms表示多条件并列,用大括号 [ ] 涵盖所查内容,类似于MySql中in方法

GET /student_info/_search
{
  "query": {
    "terms":{
      "age":[19,20,21,22]
    }
  }
}

六、范围查询

一、range

大于-gt,小于-lt,大于等于-gte,小于等于-lte

  • 数字范围
GET /student_info/_search
{
  "query": {
    "range":{
      "age":{
        "gte":19,
        "lte":21
      }
    }
  }
}
  • 时间范围
GET /student_info/_search
{
  "query": {
    "range":{
      "birthday": {
        "gte": "2001-06-15",
        "lte": "2001-09-20"
      }
    }
  }
}

二、from…to

  • 范围查询包含边界
GET /student_info/_search
{
  "query":{
    "range":{
      "age":{
        "from":19,
        "to":21
      }
    }
  }
}
  • 范围查询不包含边界
GET /student_info/_search
{
  "query": {
    "range":{
      "age":{
        "from":19,
        "to":21,
        "include_lower":false,
        "include_upper":false
      }
    }
  }
}

七、通配符查询

注:?用来匹配任意字符,*用来匹配零个或者多个字符,主要用于-英文检索

GET /student_info/_search
{
  "query":{
    "wildcard":{
      "english_name": "xiaoxiao*"
    }
  }
}
GET /student_info/_search
{
  "query":{
    "wildcard": {
      "english_name": "li?i"
    }
  }
}

八、must查询

  • must的多条件都必须满足

  • must相当于MySQL条件中的AND

GET /student_info/_search
{
  "query":{
    "bool":{
      "must":[{
        "match":{
          "name":"小小"
        }
      },
      {
        "range":{
          "age":{
            "gt":19,
            "lte":22
          }
        }
      }
      ]
    }
  }
}

九、should查询

  • should的条件,至少满足一个就可以
  • should相当于MySQL条件中的OR
GET /student_info/_search
{
  "query":{
    "bool":{
      "should":[{
        "match":{
          "name":"小小"
        }
      },
      {
        "range":{
          "age":{
            "gt":19,
            "lte":22
          }
        }
      }]
    }
  }
}

十、过滤查询

GET /student_info/_search
{
  "query":{
    "bool":{
      "should":[
        {
          "match":{
            "name":"小小"
          }
        }],
        "filter":{
          "range":{
            "age":{
              "gt":21,
              "lte":22
            }
          }
        }
    }
  }
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:37:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:30:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码