ELK---索引(Elasticsearch 7.17)


注意版本,版本之间存在差异
注意版本,版本之间存在差异
注意版本,版本之间存在差异

🏆前言

接上一篇文章:ELK–分词&Lunece

官方操作文档


🔥查看分词

POST _analyze
{
  "analyzer":"ik_max_word",
  "text":"吃葡萄不吐葡萄皮"
}

在这里插入图片描述

🍋创建索引

PUT /abner/
{
  "settings":{
    "index":{
      "number_of_shards" : "3",
      "number_of_replicas" : "0"
    }
  }
}

在这里插入图片描述

  • number_of_shards :分片数 ,创建之后不能更改
    数据分片数设置:一个分片大约100G数据,一台机器500G
  • number_of_replicas:备份数
# 查看abner的配置

GET /abner/_settings

# 查看所有索引下的配置
GET /_all/_settings

在这里插入图片描述

✨Mapping

PUT abner/_mapping/userInfo?include_type_name=true	
{
      "properties": {			
        "name": {				
          "type": "text",	
          "index": true,			
          "analyzer": "ik_max_word",	
          "search_analyzer": "ik_smart"	
        },
        "desc": {				
          "type": "text",
          "index": true,
          "analyzer": "ik_smart",
          "search_analyzer": "ik_max_word"
        },
        "desc2":{				
          "type": "text",
          "index": true,
          "analyzer": "standard",
          "search_analyzer": "standard"
        }
      }
}

在这里插入图片描述
在ES高版本要设置include_type_name=true

在这里插入图片描述

随着 7.0 版本的即将发布,type 的移除也是越来越近了,在 6.0 的时候,已经默认只能支持一个索引一个 type 了,7.0 版本新增了一个参数 include_type_name ,即让所有的 API 是 type 相关的,这个参数在 7.0 默认是 true,不过在 8.0 的时候,会默认改成 false,也就是不包含 type 信息了,这个是 type 用于移除的一个开关。

# 查看创建的mapping
GET /abner/_mapping/userInfo?include_type_name=true	

🍖插入数据

# 插入数据 	#/索引名/类型名/id
PUT /abner/userInfo/1				
{
  "name":"进口红酒",
  "desc":"乒乓球拍卖完了",
  "desc2":"进口红酒"
}
PUT /abner/userInfo/2
{
  "name":"这是一支口红",
  "desc":"球拍卖完了",
  "desc2":"进口红酒"
}
PUT /abner/userInfo/3
{
  "name":"一口一红",
  "desc":"乒乓球拍卖会",
  "desc2":"进口红酒"
}

在这里插入图片描述

🍍搜索数据

GET /abner/userInfo/_search
{
  "query":{
    "match": {
      "name": {
        "query":"进口"
      }
    }
  }
}

在这里插入图片描述

说明

name字段使用ik_max_word分词

  • 【进口红酒】分词结果:【进口】【口红】【红酒】
  • 【这是一支口红】分词结果:【这是】【一支】【一】【支】【口红】
  • 【一口一红】分词结果:【一口】【一】【口】【一红】【一】【红】

搜索”进口“使用 ik_smart 分词,分词结果为【进口】
所以查询结果只有一个【进口红酒】

检索自带分词器

以desc 字段为例(ik_smart分词):

  • 【乒乓球拍卖完了】分词结果: 【乒乓球】【拍卖】【完了】
  • 【球拍卖完了】 分词结果: 【球拍】【卖】【完了】
  • 【乒乓球拍卖会】分词结果: 【乒乓球】【拍卖会】
    检索”拍卖会“ 使用”ik_max_word“ 分词,分词结果为:【拍卖会】【拍卖】【会】
    推测结果为:【乒乓球拍卖完了】【乒乓球拍卖会】两个结果
    在这里插入图片描述
    检索条件加一个分词器,例如给检索分词器换为”standard“ 结果如下
GET /abner/userInfo/_search
{
  "query":{
    "match": {
      "desc": {
        "analyzer":"standard",
        "query":"拍卖会"
      }
    }
  }
}

在这里插入图片描述

创建索引时,可以为每个字段指定分词器,若用 ik,需要自己在es里面安装ik插件,不指定则是默认的(默认的分词效果很不好)
就像上面的这条索引:
“analyzer” 指定 这个字段在创建索引的时候使用的分词器
“search_analyzer” : 指定 这个字段在被检索的时候,给定的检索字段所用的分词器
检索的时候自己再指定分词器,那么这次查询就使用你新指定的分词器,而覆盖掉创建索引时指定的分词器
————————————————
版权声明:本文为CSDN博主「一笑生风丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43871371/article/details/102973708

🍑删除索引

# 删除索引
DELETE abner

在这里插入图片描述

⭐️总结

调用API注意点

索引类比数据库(这里为了理解不同术语的关系,不能真正等同)

ES术语数据库示例中
index(索引名称)数据库名称abner
type名称表名userInfo
字段名字段名name/desc/desc2
type字段类型text

同一个索引中不能建多个mapping
在这里插入图片描述

主键ID的指定

在这里插入图片描述

ES 分页在内存中分页

如果查第98页的数据,会把前98页数据全部加载到内存

🔎参考博客

Elasticsearch之插件Ik分词器详细测试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abner G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值