Elasticsearch入门使用

Elasticsearch入门使用

1.安装

免安装,解压后直接运行 bin 目录下的 elasticsearch.bat 文件。

image-20220311202411597

image-20220311203930717

启动后打开浏览器输入 localhost:9200,显示如下消息即启动成功。

image-20220311204024174

2.分词器插件

将 elasticsearch-analysis-ik-6.5.4 解压到 elasticsearch 解压目录下的 plugins 文件夹中。

image-20220311202653220

3.可视化客户端

ElasticSearch Head 是一个浏览器插件/扩展程序。

直接将 ElasticSearch Head.crx 文件拖入浏览器,浏览器会自动识别扩展程序。

如果浏览器提示无法加载此扩展程序,点击浏览器的设置->扩展程序->右上角打开开发者模式,重启浏览器再次拖入 .crx 文件。如果还是不行,请参考如下连接中解决办法:

https://jingyan.baidu.com/article/f71d6037c581c91ab641d120.html

image-20220311203438963

在 Elasticsearch 服务启动后打开浏览器使用插件。

image-20220311204337363

4.Elasticsearch 操作客户端

解压 kibana-6.5.4-windows-x86_64 文件,尽量与 Elasticsearch 解压文件在同一目录下,方便管理。

image-20220311204627953

配置 config 文件夹中的 kibana.yml 文件

image-20220311204829630

直接运行 bin 目录下的 kibana.bat

image-20220311203815364

image-20220311204933818

访问 http://localhost:5601

image-20220311205048437

点击 Dev Tools 即可操作 Elasticsearch

image-20220311205155619

5. 核心概念

5-1. 索引 Index

​ 含有相同属性的文档的集合。

5-2. 文档 Document

​ 被索引的基本单位,一般情况下是 JSON 格式的,包含了一些列。

5-3. 列 Field

​ 列是 Elasticsearch 的最小单位,相当于数据的某个列。

5-4. 类型 Type

​ 索引可以定义一个或多个类型,文档必须属于一个类型。

​ es 6.x 后,要求一个索引只能包含一个类型。

为了便于理解,下图展示与关系型数据库的类比

image-20220311210058028

6.其他概念(了解)

6-1. 逻辑概念
  1. 近实时: 数据更新会有1秒钟的延迟
  2. 节点: 单个装有es服务并且提供故障专员的拓展服务器
  3. 集群:一个集群就是由一个或者多个node组织在一起,共同工作。分享所有的数据,具有负载均衡功能的集群。
6-2. 物理概念:
  1. 分片(数据容器): 每个索引都有多个分片,每个分片是一个Luncene索引

    ​ 分为:主分片、从分片

  2. 备份:拷贝一份分片就是完成分片的备份

7.索引的操作

7-1. 添加
PUT my_index
{
  "settings": {
    "number_of_shards":5,
    "number_of_replicas":1
  }
}
7-2. 查看
GET my_index

还可以在 elasticsearch-head 插件中查看

image-20220311211959771

7-3. 删除
DELETE my_index
7-4. 类型映射(相当于创建数据库表)

此次创建前要先删除,否则会报错已存在

PUT /my_index
{
  "mappings": {
    "users":{
      "properties": {
        "id":{
		 "type": "long"
	    },
	    "name":{
		 "type": "keyword"
		},
		"age":{
		 "type": "integer"
		}
	 }
    } 
  }
}
7-5. 查看映射
GET /my_index/_mapping

8.文档操作

8-1. 数据类型

text 一个邮件地址,产品的描述可以使用该类型

keyword 精准的数据值查找,用于主机名、状态码

8-2. 数值类型

​ byte

​ short

​ integer

​ double

​ float

​ date

​ boolean

​ array

​ object

8-3. 添加文档(新增记录)
POST /索引名/类型名/文档ID
{
	field1:value1,
	field2:value2,
	.........
}
   
POST /my_index/users/1
{
  "id":1,
  "name":"xiangyu",
  "age":18
}
8-4. 查看文档 Field
GET /my_index/users/_search
8-5. 更新文档
POST /my_index/users/1/_update
{
  "doc": {
    "name":"lixiangyu"
  }
}

或者下面这种使用添加文档的写法,类似于覆盖数据

POST /my_index/users/1
{
  "id":1,
  "name":"xiangyu",
  "age":18
}
8-6. 删除文档
DELETE /my_index/users/1

9. 高级部分

9-0. 准备数据
PUT /es_shop
{
  "mappings": {
    "shop_product": {
      "properties": {
        "id": {
	  "type": "long"
	},
        "title": {
          "type": "text", 
          "analyzer": "ik_smart", 
          "search_analyzer": "ik_smart",
          "fields": {
          "keyword": {
          "type": "keyword",
            "ignore_above": 256
            }  
          }
        },
        "price": {"type": "integer"},
        "intro": {
          "type": "text", 
          "analyzer": "ik_smart", 
          "search_analyzer": "ik_smart",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }  
          }
        },
      	"brand": {
      	  "type": "keyword" 
      	}
      }
    }
  }
}
POST /es_shop/shop_product/_bulk
{"create":{"_id": 1}}
{"id":1,"title":"Apple iPhone XR (A2108) 128GB 白色 移动联通电信4G手机 双卡双待","price":5299,"intro":"【iPhoneXR限时特惠!】6.1英寸视网膜显示屏,A12仿生芯片,面容识别,无线充电,支持双卡!选【换修无忧版】获 AppleCare 原厂服务,享只换不修!更有快速换机、保值换新、轻松月付!","brand":"Apple"}
{"create":{"_id": 2}}
{"id":2,"title":"Apple 2019款 Macbook Pro 13.3【带触控栏】八代i7 18G 256G RP645显卡 深空灰 苹果笔记本电脑 轻薄本 MUHN2CH/A","price":15299,"intro":"【八月精选】Pro2019年新品上市送三重好礼,现在购买领满8000减400元优惠神劵,劵后更优惠!","brand":"Apple"}
{"create":{"_id": 3}}
{"id":3,"title":"Apple iPad Air 3 2019年新款平板电脑 10.5英寸(64G WLAN版/A12芯片/Retina显示屏/MUUL2CH/A)金色","price":3788,"intro":"8月尊享好礼!买iPad即送蓝牙耳机!领券立减!多款产品支持手写笔!【新一代iPad,总有一款适合你】选【换修无忧版】获 AppleCare 原厂服务,享只换不修!更有快速换机、保值换新、轻松月付!","brand":"Apple"}
{"create":{"_id": 4}}
{"id":4,"title":"华为HUAWEI MateBook X Pro 2019款 英特尔酷睿i5 13.9英寸全面屏轻薄笔记本电脑(i5 8G 512G 3K 触控) 灰","price":7999,"intro":"3K全面屏开启无界视野;轻薄设计灵动有型,HuaweiShare一碰传","brand":"华为"}
{"create":{"_id": 5}}
{"id":5,"title":"华为 HUAWEI Mate20 X (5G) 7nm工艺5G旗舰芯片全面屏超大广角徕卡三摄8GB+256GB翡冷翠5G双模全网通手机","price":6199,"intro":"【5G双模,支持SA/NSA网络,7.2英寸全景巨屏,石墨烯液冷散热】5G先驱,极速体验。","brand":"华为"}
{"create":{"_id": 6}}
{"id":6,"title":"华为平板 M6 10.8英寸麒麟980影音娱乐平板电脑4GB+64GB WiFi(香槟金)","price":2299,"intro":"【华为暑期购】8月2日-4日,M5青春版指定爆款型号优惠100元,AI语音控制","brand":"华为"}
{"create":{"_id": 7}}
{"id":7,"title":"荣耀20 PRO DXOMARK全球第二高分 4800万四摄 双光学防抖 麒麟980 全网通4G 8GB+128GB 蓝水翡翠 拍照手机","price":3199,"intro":"白条6期免息!麒麟980,4800万全焦段AI四摄!荣耀20系列2699起,4800万超广角AI四摄!","brand":"荣耀"}
{"create":{"_id": 8}}
{"id":8,"title":"荣耀MagicBook Pro 16.1英寸全面屏轻薄性能笔记本电脑(酷睿i7 8G 512G MX250 IPS FHD 指纹解锁)冰河银","price":6199,"intro":"16.1英寸无界全面屏金属轻薄本,100%sRGB色域,全高清IPS防眩光护眼屏,14小时长续航,指纹一健开机登录,魔法一碰传高速传输。","brand":"荣耀"}
{"create":{"_id": 9}}
{"id":9,"title":"荣耀平板5 麒麟8核芯片 GT游戏加速 4G+128G 10.1英寸全高清屏影音平板电脑 WiFi版 冰川蓝","price":1549,"intro":"【爆款平板推荐】哈曼卡顿专业调音,10.1英寸全高清大屏,双喇叭立体环绕音,配置多重护眼,值得拥有!","brand":"荣耀"}
{"create":{"_id": 10}}
{"id":10,"title":"小米9 4800万超广角三摄 6GB+128GB全息幻彩蓝 骁龙855 全网通4G 双卡双待 水滴全面屏拍照智能游戏手机","price":2799,"intro":"限时优惠200,成交价2799!索尼4800万广角微距三摄,屏下指纹解锁!","brand":"小米"}
{"create":{"_id": 11}}
{"id":11,"title":"小米(MI)Pro 2019款 15.6英寸金属轻薄笔记本(第八代英特尔酷睿i7-8550U 16G 512GSSD MX250 2G独显) 深空灰","price":6899,"intro":"【PCIE固态硬盘、72%NTSC高色域全高清屏】B面康宁玻璃覆盖、16G双通道大内存、第八代酷睿I7处理器、专业级调校MX150","brand":"小米"}
{"create":{"_id": 12}}
{"id":12,"title":"联想(Lenovo)拯救者Y7000P 2019英特尔酷睿i7 15.6英寸游戏笔记本电脑(i7 9750H 16G 1T SSD GTX1660Ti 144Hz)","price":9299,"intro":"超大1T固态,升级双通道16G内存一步到位,GTX1660Ti电竞级独显,英特尔9代i7H高性能处理器,144Hz电竞屏窄边框!","brand":"联想"}
9-1. 对查询结果进行排序

​ 升序:asc

​ 降序:desc

GET /es_shop/shop_product/_search
{
  "sort":{
    "price":"desc"
  }
}
9-2.多列排序
GET /es_shop/shop_product/_search
{
  "sort": [
    {
    "price":"desc"
    },
    {
    "id": "desc" 
    }
  ]
}

​ 或者

GET /es_shop/shop_product/_search
{
  "sort": [
    {
    "price":{
      "order": "desc"
    }
    },
    {
    "id":{
      "order": "desc"
    }
    }
  ]
}
9-3. 分页查询

​ 注意数据的下标从 0 开始

GET /es_shop/shop_product/_search
{
  "sort": {
    "id":"desc"
  },
  "from": 0,
  "size": 3
}

​ 第二页

GET /es_shop/shop_product/_search
{
   "sort":{
     "id":"asc"
   },
   "from": 3,
   "size": 3
  
}
9-4. 检索查询
  • term 等值查询
  • terms 多个等值查询
  • range 区间查询
  • match 模糊查询
9-4-1. 查找商品的价格等于15299的商品

等值用 term

GET /es_shop/shop_product/_search
{
  "query": {
    "term": {
      "price":15299
    }
  }
}
9-4-2. 查询id 为1 2的商品信息
GET /es_shop/shop_product/_search
{
  "query": {
    "terms": {
      "id":[1,2]
    }
  }
}
9-4-3. 我们查询商品的价格在5000–10000之间的商品,按照价格订单升序进行排列
GET /es_shop/shop_product/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 5000,
        "lte": 10000
      }
    }
  },
  "sort": {
    "price":"desc"
  }
}
9-4-4. 查询一下商品的标题中 有“手机 游戏 ”
GET /es_shop/shop_product/_search
{
  "query": {
    "match": {
      "title": "手机 游戏"
    }
  }
}
9-5. 逻辑查询

​ 相当于

must -> and

should -> or

must_not -> not

9-5-1. 查询商品标题中含有 “ i7” 的字样 并且价格大于 6000元
GET /es_shop/shop_product/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "price": {
              "gte": 6000
            }
          }
        },
        {
          "match": {
            "title": "i7"
          }
        }
      ]
    }
  }
}
9-5-2. 查询商品标题中符合"pro"的字样或者 价格在 1000-- 3000之间
GET /es_shop/shop_product/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "price": {
              "gte": 1000,
              "lte": 3000
            }
          }
        },
        {
          "match": {
            "title": "pro"
          }
        }
      ]
    }
  }
}
9-6. 过滤查询
  • 过滤查询和检索查询从效果来看是一样的。区别在于过滤查询不平分,结果能缓存。检索查询要平分,如果不缓存,一般不会直接使用过滤查询。

检索查询时:

GET /es_shop/shop_product/_search
{
  "query": {
    "match": {
      "title": "pro"
    }
  }
}

过滤查询时:

GET /es_shop/shop_product/_search
{
  "query": {
    "bool": {
      "filter": {
        "match":{
          "title":"pro"
        }
      }
    }
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值