elasticsearch集群

1 简单查询

​ id查询 --掌握

​ GET crm/employee/id

​ 批量查询 --掌握

​ GET crm/employee/_mget

​ {

"ids":[id1,id2]

​ }

空查询 --掌握

GET _search

分页查询 --掌握

GET _search?size=10&from=0

字符查询 --针对条件比较少 --掌握

​ GET _search?q=age:12 /[20 TO 50] & from=1&size=1

2 DSL查询

ES提供的标准的查询语言 类似sql

DSL= DSL查询 +DSL过滤

DSL查询和DSL过滤写法很像 DSL主要针对“有多像” 而DSL过滤 相当于 “有"或者"没有”

DSL查询和DSL过滤的区别:(理解)

​ DSL过滤写法结果是可以被缓存的

DSL查询 类似模糊的查询,可以计算相关性 得分,不缓存

DSL过滤和查询可以共用起来

DSL查询语法:

## 完全匹配
GET crm/employee/_search
{
  "query":{
    "match": {
      "name":"xxx"
    }
  }
}
## 模糊写法
GET crm/employee/_search
{
  "query":{
    "wildcard": {
      "name":"*xxx*"
    }
  }
}

DSL过滤语法:精确查询

GET crm/employee/_search
{
  "query":{
      "bool": {
        "must": [
           {"match": {"name":"xxx"}}
        ],
        "filter": {
          "term": {
            "age": "10"
          }
        }
      }
  },
  "from":0,
  "size":3,
  "_source":["name","age"],
  "sort":[{"age":"desc"}]
}

后面通过java操作

3 分词集群

lucene 分词: 查询查询的值 分开 在到索引库里面查询

​ 郑波 人名和地名 不需要分词 关键字 iphone11 iphone 11

IK:

​ 集成:

​ (1)下载–解压

​ (2)放到es安装目录下面的plugins/ik/…

​ (3)测试

4 字段的映射配置

4.1 默认映射(掌握)

字段的映射配置 指的是 类似给表里面列添加类型

我们在保存值,其他es就已经指定的默认的类型

id:11 —>long

name:“xxx”–>text

4.2 自定义映射(掌握)

## 自定义映射
DELETE shop;
PUT shop;

## 只能对新字段进行映射 如果以前有这个字段有类型,去修改出问题 --转换问题
POST shop/goods/_mapping
{
  "goods": {
  "properties": {
  "price3": {
    "type": "double"
              },
  "name3": {
  "type": "text",
  "analyzer": "ik_smart",
  "search_analyzer": "ik_smart"
              }
          }
      }
  
}

最好方案:在创建类型(表)的,就应该指定映射信息,指定你要不要分词

4.3 全局映射

默认映射规则 和动态模版

动态模版: 提示把设定属性的规则设定好,到时候你加入的数据的时候,会自己按照我们设置的规则给你映射

4.4 最佳方案 --理解

优先级

(1)自定义 -->(2)-》全局的 -->(3) 默认的

–最佳实践:设置映射的时候:

​ (1) 先搞个全局

​ (2)如果使用自己自定义的

​ (3)默认

5 集群

5.1 为什么需要集群

处理高并发 大数据 提供性能

解决单点故障

5.2 elasticsearch里面集群

平时启动一个 elasticesearch服务,它 已经处理集群 --它这个只有一台机子

如果要做集群 肯定需要多台机子

1es cluster -->n多个节点(node)–》n(分片shard)

node.master: true node.data: true

master Node:主节点,维护集群信息 索引库操作 具备选举资格

​ data node:数据节点, 文档crud

​ client node:只负责处理用户请求

(1)node.master: true node.data: true

​ 这种组合表示这个节点即有成为主节点的资格,又存储数据。

​ 如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。ElasticSearch默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置,因为这样相当于主节点和数据节点的角色混合到一块了。

(2)node.master: false node.data: true

​ 这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储数据。

​ 这个节点我们称为data(数据)节点。在集群中需要单独设置几个这样的节点负责存储数据,后期提供存储和查询服务。

(3)node.master: true node.data: false

​ 这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点,这个节点我们称为master节点。

(4)node.master: false node.data: false

​ 这种组合表示这个节点即不会成为主节点,也不会存储数据,这个节点的意义是作为一个client(客户端)节点,主要是针对海量请求的时候可以进行负载均衡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值