二.Elasticsearch进阶

news2024/11/16 5:43:38

建议从这里开始看:Elasticsearch快速入门及使用

Elasticsearch进阶

  • 一.Elasticsearch检索方式
    • 1.uri + 检索参数(不常用)
    • 2.uri + 请求体(常用,也叫Query DSL)
  • 二.Query DSL语法举例
    • 1.match全文匹配
    • 2.match_phrase短语匹配
    • 3.multi_match多字段匹配
    • 4.bool复合查询
    • 5.term查询
  • 三.Elasticsearch分析功能
    • 1.aggregations聚合(相当于group by和聚合函数)
  • 四.Elasticsearch映射
    • 1.查看字段的映射(添加数据的时候,es会默认猜测字段的类型并保存)
    • 2.创建映射
    • 3.添加新的字段映射
    • 4.更新映射
  • 五.分词
    • 1.安装IK分词器
    • 2.分词模式
      • (1) ik_smart(最少切分拆分)
      • (2) ik_max_word(最细粒度拆分)
    • 3.自定义拓展词库

一.Elasticsearch检索方式

1.uri + 检索参数(不常用)

//查询kunkun库下的以account_number升序排序的所有数据,默认查询10条,相当于分页
GET /kunkun/_search?q=*&sort=account_number:asc
解释:
_search:查询关键字
q=*:查询所有数据
sort=account_number:asc:以account_number字段为排序条件

在这里插入图片描述

2.uri + 请求体(常用,也叫Query DSL)

GET /kunkun/_search
{
  "query": { //匹配所有
    "match_all": {}
  },
  "sort": [ 
    {
      "account_number": "asc"  //升序排序
    },
     {
      "age": "desc"  //降序排序
    }
  ],
  "from": 10,//从第十条开始
  "size": 10 //查十条
  "_source":["account_number","age"]  //查出的数据只有account_number和age字段

}

在这里插入图片描述

二.Query DSL语法举例

Query DSL官网文档

1.match全文匹配

//全文检索按照相关性得分进行排序
GET /kunkun/_search
{
  "query": {
    "match": { //匹配条件 address包含'Court'或'ikun'的数据
      "address": "Court ikun"
    }
  }
}

在这里插入图片描述

2.match_phrase短语匹配

GET /kunkun/_search
{
  "query": {
    "match_phrase": { //短语匹配 address包含'Court ikun'的数据
      "address": "Court ikun"
    }
  }
}

在这里插入图片描述

3.multi_match多字段匹配

GET /kunkun/_search
{
  "query": {
    "multi_match": { 
      "query": "Court", //匹配条件 匹配'address'和'email'字段包含'Court'的数据
      "fields": ["address","email"] //匹配字段
    }
  }
}

在这里插入图片描述

4.bool复合查询

GET /kunkun/_search
{
  "query": {
    "bool": {
      "must": [ //lastname必须是ikun(满足的话,相关性得分会更高)
        { "match": { "lastname": "ikun" } }
      ],
      "must_not": [//email必须不是xiaoheizi(满足的话,相关性得分会更高)
        { "match": { "email": "xiaoheizi" } }
      ],
      "should":[//年龄是不是25都可以(满足的话,相关性得分会更高)
        {"match": {
          "age": "25"
        }}
        ],
        "filter": { //过滤年龄在10-30之间的结果(满足也不计算相关性得分)
          "range": {
            "age": {
              "gte": 10,
              "lte": 30
            }
          }
        }
    }
  }
}

5.term查询

注意: term用于查询非文本字段

//匹配age是22的数据
GET /kunkun/_search
{
  "query": {
    "term": {
        "age": "22"
    }
  }
}

三.Elasticsearch分析功能

1.aggregations聚合(相当于group by和聚合函数)

aggregations聚合官网文档

/**
 * (1) 查询address包含mill的所有人的年龄分布及平均年龄
 */
GET /kunkun/_search
{
  "query": {
    "match": {
        "address": "mill"
    }
  },
  "aggs": {//聚合
     "ikunAgg": {//聚合操作名称可以自定义
       "terms": {//查看age的分布
        "field": "age",
        "size": 10  //取出age前10种分布
      }
    },
     "ikunAvg":{//自定义平均年龄的名称
       "avg": { //求age的平均值
         "field": "age"
       }
      }
  }
}

在这里插入图片描述

/**
 * (2) 按照年龄聚合,并且查出这些年龄段人的平均薪资
 */
GET /kunkun/_search
{
  "query": {
    "match_all": {//查询全部内容
      
    }
  },
  "aggs": {
     "ikunAgg": {//聚合年龄
       "terms": {
        "field": "age"
      },
      "aggs": {//在年龄聚合下,嵌套工资的子聚合
        "ikunAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

在这里插入图片描述

四.Elasticsearch映射

mapping映射官网文档

Mapping是用来定义一个文档,以及它包含的属性是如何储存和索引的(就是给字段指定类型)。

1.查看字段的映射(添加数据的时候,es会默认猜测字段的类型并保存)

//查看字段的类型
GET /kunkun/_mapping

在这里插入图片描述

2.创建映射

PUT /my-index
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" }, 
      
      //keyword:是精准匹配。 
      "email":  { "type": "keyword"  },

	  //text:保存的时候会进行分词,然后检索的时候按照分词进行匹配。 
      "name":   { "type": "text"  }     
    }
  }
}

3.添加新的字段映射

PUT /my-index/_mapping
{
  "properties":{
    "chang":{ //新加字段名字
      "type":"text", //映射类型
      "index":"false" //该字段不参与检索
    }
  }
}

4.更新映射

对于已存在的字段映射我们不能直接去更新,我们需要创建新的索引进行数据迁移。

//1.创建新的索引并更新字段映射
PUT /my-index—new
{
  "mappings": {
    "properties": {
      "age":    { "type": "long" },  
      "email":  { "type": "text"  }, 
      "name":   { "type": "text"  }     
    }
  }
}

//2.把旧索引数据迁移到新索引
POST _reindex
{
  "source": {
    "index": "my-index", //旧索引名称
    "type": "account"    //旧索引的类型(6.0版本之前,6.0之后版本不需要写类型)
  },
  "dest": {
    "index": "my-index—new" //新索引的名称
  }
}

五.分词

es内置的分词器文档

IK分词器7.3.1 提取码:0221

IK其他版本
一个 tokenizer (分词器) 接收一个字符流,将之分割为独立的 tokens (词元,通常是独立的单词),然后输出 tokens 流。

//默认是standard分词器
POST _analyze
{
  "analyzer": "standard", //分词器类型
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." //分词的语句
}

注意:因为es内嵌的分词器都是对英文的分词,所以我们还要下载中文的分词器(IK分词器插件的版本要和ElasticSearch的版本一致)。

1.安装IK分词器

把你下载下来的分词器放在 elasticsearch目录下 -> plugins
在这里插入图片描述

2.分词模式

(1) ik_smart(最少切分拆分)

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我是小黑子"
}

在这里插入图片描述

(2) ik_max_word(最细粒度拆分)

在这里插入图片描述

3.自定义拓展词库

说明: 因为有一些词,识别不了。比如:我是真爱和一些网络用语分词就不准确,所以咱们要自定义拓展词库。

(1) 没自定义拓展词库之前
在这里插入图片描述

(2) 自定义词库
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3) 加了自定义词库之后
在这里插入图片描述

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

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

相关文章

在Gradio中创建交互式代码编辑器:介绍Code模块和其功能

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Matlab评价模型--灰色关联度分析

评价模型–灰色关联度分析 灰色关联度分析 基本思想 灰色关联分析的基本思想 是根据序列曲线几何形状的相似程度来判断其联系是否紧密,曲线越接近,相应序列之间的关联度就越大,反之则越小。 此方法可用于 进行系统分析,也可应用…

uniapp顶部导航栏被遮住显示问题

解决uniapp顶部导航栏被遮住显示问题 uniapp官方给了处理的方案&#xff0c;即css变量&#xff0c;–status-bar-height&#xff0c;小程序这个值是25px&#xff0c;app则根据实际情况去变化 如下&#xff1a; //头部导航栏 <view class"header"> </view…

【算法题】动态规划中级阶段之最长回文子串、括号生成、跳跃游戏

动态规划中级阶段 前言一、最长回文子串1.1、思路1.2、代码实现 二、括号生成2.1、思路2.2、代码实现 三、跳跃游戏 II3.2、思路3.2、代码实现 总结 前言 动态规划&#xff08;Dynamic Programming&#xff0c;简称 DP&#xff09;是一种解决多阶段决策过程最优化问题的方法。…

加速你的容器管理!轻松安装kubeadm、kebelet和kubectl!

1 kubernetes镜像切换成国内源 访问 阿里云镜像&#xff1a; M1M2芯片的arm64架构需要更改&#xff1a; cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_6…

Nginx【概述、应用场景、环境准备、下载与安装、目录详解、】(一)-全面详解(学习总结---从入门到深化)

目录 Nginx概述 Nginx 四大应用场景 为什么用Nginx 环境准备 Nginx下载与安装 Nginx目录详解 Nginx概述 Nginx是一款轻量级的Web服务器、反向代理服务器&#xff0c;由于它的内存占用少&#xff0c;启动极快&#xff0c;高并发能力强&#xff0c;在互联网项目中广泛应用。Ngi…

Linux基础:Vim编辑器实用指南

前言 Linux基础是学习云原生的重中之重&#xff0c;如果你还不知道学习路线可以参考&#xff1a; 耗时3个月&#xff0c;线下访谈30 csdn大佬&#xff0c;规划出了我的云原生学习路线 文章目录 前言vim的介绍vim的四种模式1. 插入模式1.1 进入插入模式&#xff1a;1.2 退出插入…

layui实现选择框搜索(下拉搜索)功能

1.可以使用官方介绍的方法&#xff0c;适用于form表单内的下拉搜索&#xff0c;外层需要使用layui-form样式&#xff0c;select标签内添加lay-search“”&#xff0c;此方法若外层不添加layui-form无法实现搜索功能&#xff0c;如下所示&#xff1a; 2.下面是另一种形式的下拉选…

【GESP】2023年06月图形化一级 -- 小猫寻宝

文章目录 小猫寻宝1. 准备工作2. 功能实现3. 设计思路与实现&#xff08;1&#xff09;角色、舞台背景设置a. 角色设置b. 舞台背景设置 &#xff08;2&#xff09;脚本编写a. 角色&#xff1a;Catb. 角色&#xff1a;Crystal 4. 评分标准 小猫寻宝 1. 准备工作 &#xff08;1&…

kafka生产者api和数据操作

Kafka 生产者 发送流程 消息发送过程中涉及到两个线程——main线程和Sender线程 main线程 使用serializer&#xff08;并非java默认&#xff09;序列化数据&#xff0c;使用partitioner确认发送分区 在main线程中创建了一个双端队列RecordAccumulator&#xff0c;main线程将…

从0到1搭建spring cloud alibaba +springboot+nacos+dubbo微服务

版本关系&#xff1a; spring cloud alibaba各组件对应关系 创建父工程&#xff0c;pom.xml配置如下&#xff1a; 由以上版本对应关系&#xff1a; springboot版本&#xff1a;2.3.2.RELEASE spring cloud 版本选择&#xff1a;Hoxton.SR9 spring cloud alibaba版本选择&#…

【UE5 Cesium】02-Cesium for Unreal 添加在线数据集

上一篇&#xff1a; 【UE Cesium】01-在虚幻5中使用Cesium 步骤 1. 点击“connected to Cesium ion as xxx” 在弹出的网址中点击“Asset Depot”&#xff08;资产仓库&#xff09; 找到“Melbourne Photogrammetry”点击添加&#xff0c;添加到你的账户中。&#xff08;这里我…

关于我花了一个星期学习微信小程序开发、并且成功开发出一个商城项目系统的心得体会

前言 一直做的PC端的项目开发&#xff0c;想做一下手机端的开发。后端基本上是不用怎么变化&#xff0c;主要变化的是前端&#xff0c;前端网页运行的地方不同&#xff0c;一个运行在手机&#xff0c;一个运行在PC网页上。微信小程序的开发和Vue框架开发有诸多相似之处&#xf…

smardaten用户手册全新发布!5个超实用的使用技巧(建议收藏!)

社区版发布后&#xff0c;很多用户自行下载安装使用&#xff0c;我们收到了一些客官关于产品文档的吐槽和建议~~于是&#xff0c;我们重新编排了用户手册&#xff0c;来帮助大家更快、更好、更简单的上手无代码开发。今天睿睿来跟大家分享用户手册更新点&#xff0c;以及如何使…

常用网络接口自动化测试框架

目录 一、RESTful&#xff08;resource representational state transfer)类型接口测试 (一&#xff09;GUI界面测试工具&#xff1a;jmeter &#xff08;二&#xff09;JAVA语言脚本测试&#xff08;HttpClient) 二、WebService接口测试 &#xff08;一&#xff09;GUI界…

JAVA1

文章目录 计算机的硬件与软件DOS命令 计算机的硬件与软件 DOS命令

Flink-任务槽和并行度的关系

任务槽和并行度都跟程序的并行执行有关&#xff0c;但两者是完全不同的概念。简单来说任务槽是静态的概念&#xff0c;是指TaskManager具有的并发执行能力&#xff0c;可以通过参数taskmanager.numberOfTaskSlots进行配置&#xff1b;而并行度是动态概念&#xff0c;也就是Task…

菜鸟推出新一代资产管理操作系统“WIN”

在6月28日的2023全球智慧物流峰会上&#xff0c;菜鸟地网发布了新一代资产管理操作系统“WIN”。基于菜鸟地网多年积累的全球一体化物流基础设施网络和资产管理经验&#xff0c;依托物联网、大数据、人工智能等物流科技能力&#xff0c;“WIN”将为客户提供全链路的资产开发和运…

学习笔记20230629 -- 《分享在jsp分布式项目支援开发衍生功能时遇到和解决的问题》

1.jsp项目的页面跳转&#xff0c;需要后端的java技术做支撑&#xff0c;在java的接口文件中写跳转接口&#xff0c;使用ajax去请求这个跳转接口&#xff0c;将返回的数据&#xff08;html标签代码&#xff09;&#xff0c;放到当前页面或弹窗的"content"属性中 2…

联合体结合位域的作用

联合体结合位域的作用 例如 这段代码&#xff0c;巧妙运用了位域和联合体的特性&#xff0c;rx370x_cfg_data_t位域控制每个成员的大小 使总大小为32&#xff0c;cfg_u32和位域的大小相等&#xff0c;因为联合体共用一个空间的原因&#xff0c;此时cfg_u32中存放的内容就是位域…