首页 > 其他分享 >30.虚拟机换云服务器

30.虚拟机换云服务器

时间:2023-08-05 22:33:25浏览次数:41  
标签:search GET 虚拟机 30 换云 address query match bank

我一直以来我是用虚拟机安装的mysql,redis,es等,在本机安装nacos作为注册中心和配置中心的,每次重启电脑都需要启动nacos和虚拟机比较麻烦。

今天斥巨资103.08元购买个一年的华为云服务器来用于开发,购买后mysql,redis这些都是安装在虚拟机,云服务器也是linux系统,直接在云服务器安装docker,然后按照前面的博客那样安装就好了。

这里主要说一下nacos,之前由于在本机安装的,本机是Windows系统,下面讲一下怎么在Linux安装使用。

下载镜像

docker pull nacos/nacos-server

下载完可以查一下:

创建挂载目录

在本地home文件中挂载目录,挂载配置以及日志文件。

mkdir -p /home/nacos/logs
mkdir -p /home/nacos/init.d

 

在将所有的检索条件全部放在请求体里

GET /bank/_search
{
  "query":{"match_all": {}},
  "sort": [
    {
      "account_number": "asc"
    }
  ]
}

 如果我们希望根据account_number正序排列后,如果account_number相同再根据balance倒序排列怎么实现:

GET /bank/_search
{
  "query":{"match_all": {}},
  "sort": [
    {
      "account_number": "asc"
    },
   {
      "balance": "desc"
    }
  ]
}

QueryDSL基本使用

上述的第二种查询方式就属于QueryDSL的方式,我们实际项目中也都是使用QueryDSL这个方式来做查询。

基本用法

GET /bank/_search
{
  "query":{"match": {
"account_number":20
}}, "sort": [ { "account_number": "asc" }, { "balance": "desc" } ], "from":0, "size":20,
"_source":["balance","firstname"]
}

query表示where条件

sort表示orderby排序

from表示分页的pageIndex,跟pageIndex不同的是from是从0开始的

size表示分页的pageSize

_source可以声明我们要查询的文档的字段,避免了SELECT *

match全文检索

GET /bank/_search
{
  "query":{"match": {
        "address":"mill lane"
  }}
}

 会对检索条件进行分词和存储的文档的倒排索引进行分词匹配检索,会按照相关性得分排序。

match_phrase短语匹配

GET /bank/_search
{
  "query":{"match_phrase": {
        "address":"mill lane"
  }}
}

 只查到一条记录,match_phrase就不会对检索的条件进行分词了,mill lane不会分词成mill和lane。

multi_match多字段匹配

GET /bank/_search
{
  "query":{"mutil_match": {
        "query":"mill movico",
"fields":["address","city"] }} }

这个语句相当于MySql的: address like '%mill%' or address like '%movico%' or city like '%mill%' or city like '%movico%' ,当然不同的地方是ES是根据分词来做匹配的。

bool复合查询

GET /bank/_search
{
  "query":{
      "bool":{
         "must": [
           {"match": {
             "address": "mill"
           }},
           {
             "match": {
               "gender": "M"
             }
           }
         ],
         "must_not": [
           {"match": {
             "age": "28"
           }}
         ],
         "should": [
           {"match": {
             "lastname": "Hines"
           }}
         ]
      }
  }
}

这个语句相当于MySql的: 

address='mill' and gender='M' and age<>28
然后根据lastname是否匹配Hines,匹配则相关性得分越高

filter结果过滤

filter用法与must一样,但是也有区别,区别在于:

must过滤出来的数据有相关性得分,filter过滤出来的数据相关性得分为0。

term

非文本类型字段我们一般使用term,文本字段一般使用match匹配。

非文本字段用term的原因是我们希望age检索28就只搜索28岁的数据,而不希望给128,280岁的都检索出来。

GET /bank/_search
{
  "query":{
      "term":{
        "age":28
      }
  }
}

.keyword精确匹配

我们知道match是分词匹配,match_phrase是不分词like。

而.keyword就是精确匹配,比如我们要检索address='aaa'的:

GET /bank/_search
{
  "query":{
      "match":{
        "address.keyword":"aaa"
      }
  }
}

aggregations聚合

聚合提供了从数据中分组和提取数据的能力。最简单的聚合方法大致等于MYSQL的GROUP BY和SQL 聚合函数。

例1

搜索address中包含mill的所有人的年龄分布以及平均年龄,但不显示这些人的详情:

GET /bank/_search
{
  "query":{
      "match":{
        "address":"mill"
      }
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    },
    "ageAvg":{
      "avg": {
        "field": "age"
      }
    }
  },
  "size":0
}

例2

按照年龄聚合,并且计算这些每个年龄组的人的平均工资:

GET /bank/_search
{
  "query":{
      "match_all":{}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      },
      "aggs": {
        "balanceAvg":{
            "avg": {
              "field": "balance"
             }
          }
      }
    }
  }
}

例3

查询所有年龄分布,并且计算这些每个年龄组的男性平均工资和女性平均工资以及总平均工资:

GET /bank/_search
{
  "query":{
      "match_all":{}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      },
      "aggs": {
        "genderAgg":{
           "terms": {
             "field": "gender.keyword",
             "size": 100
           },
           "aggs": {
             "balanceAvg": {
               "avg": {
                 "field": "balance"
               }
             }
           }
        },
        "balanceAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

mapping映射

文档的字段映射数据类型,可以理解为MySql的字段的数据类型。

前面说了,索引下面是类型,类型下面是文档,ES在6.0版本开始去除了类型,索引下面直接是文档,去除的类型与MySql的表同级,不是数据类型,不要理解错了。

我们查一下样本数据里映射的字段的数据类型:

第一次写入数据到文档时候,ES会根据数据推断出数据类型,我们也可以指定数据类型,即创建映射。

创建映射

 创建一个索引my_index并创建映射,type同级还可以加一个index,取值为true,false,不写默认为true,表示是否可以作为检索条件。

添加一个映射的字段

给my_index索引添加了一个字段employee-id,且该字段不可以作为检索条件 

修改映射

已存在的映射字段无法修改,要想修改只能常见新的索引进行数据迁移。

数据迁移

1.先查一下bank索引的映射

 2.创建一个新的索引newbank,并指定映射关系,其中age不适用bank索引的long类型,改为integer

 3.迁移数据,bank的数据迁移到newbank

 由于bank用的是6.0版本以前的,使用了类型,所以迁移需要指定type,如果6.0版本后不使用类型的索引迁移就不需要指定type了。

4.查一下迁移后的索引下的数据

 1000条数据,和bank索引下的数据一直,没问题。

标签:search,GET,虚拟机,30,换云,address,query,match,bank
From: https://www.cnblogs.com/cheng8/p/17608788.html

相关文章

  • 【230805-4】三角形ABC中,AB=3,AC=2,BC=4,点D在边BC上,角BAD=45度,则tan∠CAD=?
    ......
  • 虚拟机 中 centos8 ens33 无ip地址 解决
    执行以下命令#查看托管状态nmclin#显示disabled则为本文遇到的问题,如果是enabled则可以不用往下看了#开启托管nmclinon#重启systemctlrestartNetworkManager然后就可以继续玩耍了......
  • 2023-07-30~08-05第四周暑假生活
    本周每天学习一个小时hdfs,web设计hdfs和linux的操作主要用到命令窗口,大量陌生的命令操作是学习的一大难点主要学习了:hdfs的目录操作cd/usr/local/hadoop./bin/hdfsdfs-mkdir-p/user/hadoop在HDFS中创建一个“/user/hadoop”目录,“–mkdir”是创建目录的操作,“-p”表......
  • 7月30日
    今天学习了Java的一种特殊类枚举类的格式:修饰符enum枚举类名{名称1,名称2,...其他成员...}枚举类的第一行只能罗列一些名称,这些名称是常量,每个常量记住的都是枚举类的一个对象......
  • 7月30日
    7月30日今天哥们请客,作为兄弟必须到场啊,一块吃的半天妖的烤鱼,然后一块去网吧干了会儿游戏,当然是好兄弟请的客,我呢只能有钱再说了,回家就下午四五点了,也没吃饭,再刷了会儿视频,猛然想起来读后感的事,然后就起来看了看大道至简的书,把之前的笔记归置归置,然后开始写读后感了。......
  • 20230805 Datawhale第一次直播笔记
    机器学习上分技巧内容解析subtask是并列的,并且取最优,那么只需要针对最优进行优化转化为回归问题是否会更加准确数据分析和特征工程是非常关键的部分数据探索性分析(EDA):数据集大小,字段类型缺失值情况特征是否冗余是否存在时间信息标签的分布训练集测试集的分布单变量/......
  • 备控N5105 G30B安装群晖
    1.安装前准备1.1.硬件准备U盘2.5寸,7-9mm,机械SATA硬盘(倍控送的SATA线很长,极难安装......
  • STM32F030C8T6 SPI 通讯问题排查分析
    配置及问题列举1.STM32F030C8T6:48M系统时钟配置;2.SPI1:驱动LCD,半工主机通讯,极性为高、边沿为2,时钟分频系数16分频;3.SPI2:驱动TDC-GP21,全工主机通讯,极性为低、边沿为2,时钟分频系数4分频;1.LCD驱动为上升沿,改为{极性为低、边沿为1},初始化却无效;2.TDC-GP21驱动为下降沿,读取I......
  • 虚拟机中的ubuntu连不上网
        ......
  • 国产MCU-CW32F030开发学习-OLED模块
    国产MCU-CW32F030开发学习-OLED模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件0.96IIColed模块软件平台KeilMDK5.31IAR串口调试助手IIC总线处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双方约定信号的协议。2、你的语速别人得能接受......