谷粒商城集成 elasticsearch

谷粒商城集成 elasticsearch,第1张

谷粒商城集成 elasticsearch 谷粒商城集成 elasticsearch 一、elasticsearch 基本概念
  • Elasticsearch (简称ES)是一个分布式、restful 风格的搜索和数据分析引擎
索引(indices)Databases 数据库类型(type)Table 数据表 [7.x废弃]文档(document)Row 行字段(Field)Columns 列mapping映射schema约束 二、elasticsearch 搜索原理

倒排索引

  • 步骤
    • 数据根据词条进行分词,同时记录文档索引位置
    • 将词条相同的数据化进行合并
    • 对词条进行排序
  • 过程
    • 先将搜索词语进行分词,分词后在倒排索引列表查询文档位置(docId),根据docId查询文档数据。
三、elasticsearch 与 Solr 的区别 elasticsearchSolr开箱即用安装略微复杂自带分布式协调管理功能利用 zookeeper 进行分布式管理仅支持 JSON 格式的数据支持多种格式的数据,比如JSON、XML、CSV适用于新兴的实时搜索应用传统搜索应用的有力解决方案 四、DSL 语句的基本使用 1. 索引库 *** 作
  • 查看所有索引库:GET /_cat/indices?v
  • 查看一个索引库:GET/索引库名
  • 创建索引库:
			PUT /索引库名
			{
				"settings": {
					"number_of_shards": 3, # 主分片数
					"number_of_replicas": 2 # 副分片数
				}
			}
2. 映射 *** 作
  • type 字段类型
  • index 是否索引:取决于是否以该字段进行搜索
  • store 是否存储:取决于搜索结果集中是否展示该字段,es中即使设置为false,依然存储,存储到_source。如果设置为true,会额外保存一份
  • analyzer:分词器,这里使用ik分词器:ik_max_word或者ik_smart
PUT /索引库名/_mapping
		{
			"properties": {
				"字段名": {
					"type": 
					"index":
					"analyzer"
				}
			}
		}
3. 文档的CRUD
  • 新增/更新
			POST /索引库名/_doc/{id}
			{
				"字段名": "字段值"
			}
  • 删除
DELETe /索引库名/_doc/{id}
  • 查询
			GET /atguigu/_search
			{
			  "query": {
				"match_all": {}
			  }
			}
  • 匹配查询
				"match": {
					"字段名": {
						"query": "条件",
						"operator": "and/or"
					}
				}
  • 词条查询:最小的分词单元,条件必须是最小的分词单元
				"term": {
					"字段名": {
						"value": "词条条件"
					}
				}
				
				"terms": {
					"字段名": [
						"词条条件"
					]
				}
  • 范围查询
				"range": {
					"字段名": {
						"gt/gte": 起始值,
						"lt/lte": 截止值
					}
				}
  • 组合、布尔查询
				"bool": {
					"must/must_not/should": [
						{},{}
					]
				}
  • 过滤查询:不影响得分,进而就不影响排名
				"bool": {
					"must": [],
					"filter": [],
				}
  • 排序查询
				"sort": [
					{
						"字段名": {
							"order": "asc/desc"
						}
					}
				]
  • 分页查询
				from: (pageNum - 1) * pageSize
				size: pageSize
  • 高亮查询
				"hignlight": {
					"fields": {"字段名":{}},
					"pre_tags": "",
					"post_tags": ""
				}
  • 结果集过滤
				"_source": {
					"includes/excludes": ["字段列表"]
				}
五、数据库中的数据批量导入索引库

  1. 添加依赖
  2. 配置 yml 配置文件
  3. 构建一个 Goods 对象(索引)
  4. 提供数据的七个接口
    • 分页查询已上架的SPU信息
    • 根据SpuId查询对应的SKU信息(接口已写好)
    • 根据分类id查询商品分类(逆向工程已自动生成)
    • 根据品牌id查询品牌(逆向工程已自动生成)
    • 根据skuid查询库存(gmall-wms中接口已写好)
    • 根据spuId和cid查询检索规格参数及值(cid用于查attr_id)
    • 根据skuId和cid查询检索规格参数及值(cid用于查attr_id)
  5. 创建一个 GoodsRepository接口 用于文档 *** 作
  6. 将数据批量导入索引库,实现数据同步
六、实现搜索功能
  1. 构建搜索请求体,设置索引库 并设置搜索条件构建器
  2. 执行查询
  3. 构建查询条件(bool查询)
    1. 匹配查询
    2. 过滤查询
      1. 品牌过滤
      2. 分类过滤
      3. 价格区间过滤
      4. 是否有货
      5. 规格参数的过滤
  4. 构建排序
  5. 构建分页
  6. 构建高亮
  7. 构建聚合
    1. 构建品牌聚合
    2. 构建分类聚合
    3. 构建规格参数的嵌套聚合
  8. 构建结果集过滤
  9. 解析结果集

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5677957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存