栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ELK---索引(Elasticsearch 7.17)

ELK---索引(Elasticsearch 7.17)

ELK---索引

前言查看分词创建索引✨Mapping插入数据搜索数据

说明检索自带分词器 删除索引⭐️总结

调用API注意点

主键ID的指定ES 分页在内存中分页 参考博客


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

前言

接上一篇文章: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数据,一台机器500Gnumber_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分词器详细测试

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号