如何设计es的索引库结构

news2025/1/10 23:47:44

1、确定索引库的名称

建议和使用的数据库的表名相对应

比如:数据库的表名为

 那么索引库的名称可以为:item

2、确定索引库需要的字段

1.根据前端界面来判断需要什么字段

例如:

上边这个界面需要的就是:

分类,品牌,价格,商品图片,商品名称,评论数量,销量

除此之外,还需要

id,用于关键字全文检索的字段:all,用于自动补全的字段:suggestion,是否为推广广告:isAD

2.确定这些字段的属性

(图片不参与搜索,因此需要index为false)

分类:是字符串类型,且不可分词的,为keyword

品牌:是字符串类型,且不可分词的,为keyword

价格:是数值类型,为long

商品图片:存储的是网址,且不可分词的,为keyword

评论数量:是数值类型,为integer

销量:是数值类型,为integer

id:可以是long类型,也可以是keyword

all:因为搜索的时候,可以通过分类,商品名称,品牌进行搜索,所以为了提高效率,可以在床架索引库时,将这三个字段的内容复制一份到all字段,所以类型应该是可分词的文本text

suggestion:参与补全查询的字段必须是completion类型

isAD:只是保存是和否,所以是boolean(这个字段根据业务情况,可有可无)

3、根据上边分析的索引库结构创建索引库

es的索引库CRUD可以参考

http://t.csdn.cn/eSoyA

本例创建索引库的DSL语句为:

其中包含了自定义分词器,可以参考

http://t.csdn.cn/D7joj

# 商品数据索引库
PUT /item
{
  "settings": {
	"analysis": {
	  "analyzer": {
		"text_analyzer": {
		  "tokenizer": "ik_max_word",
		  "filter": "py"
		},
		"completion_analyzer": {
		  "tokenizer": "keyword",
		  "filter": "py"
		}
	  },
	  "filter": {
		"py": {
		  "type": "pinyin",
		  "keep_full_pinyin": false,
		  "keep_joined_full_pinyin": true,
		  "keep_original": true,
		  "limit_first_letter_length": 16,
		  "remove_duplicated_term": true,
		  "none_chinese_pinyin_tokenize": false
		}
	  }
	}
  },
  "mappings": {
	"properties": {
	  "id":{
		"type": "keyword"
	  },
	  "name":{
		"type": "text",
		"analyzer": "text_analyzer",
		"search_analyzer": "ik_smart",
		"copy_to": "all"
	  },
	  "price":{
		"type": "long"
	  },
	  "image":{
		"type": "keyword",
		"index": false
	  },
	  "category":{
		"type": "keyword",
		"copy_to": "all"
	  },
	  "brand":{
		"type": "keyword",
		"copy_to": "all"
	  },
	  "sold":{
		"type": "integer"
	  },
	  "commentCount":{
		"type": "integer"
	  },
	  "isAD":{
		"type": "boolean"
	  },
	  "suggestion":{
		  "type": "completion",
		  "analyzer": "completion_analyzer",
		  "search_analyzer": "keyword"
	  },
	  "all":{
		"type": "text",
		"analyzer": "text_analyzer",
		"search_analyzer": "ik_smart"
	  }
	}
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ZPL控制Zebra打印机

ZPL简介: Zebra编程语言 (ZPL)是所有 ZPL 兼容打印机使用的命令语言。可用于绘制文本、形状、条形码和图像等元素,组合这些元素。打印机使用它作为指令来创建打印在标签上的图像。 想要打印一个标签,您可能需要告诉打印机: 产品名称是什么…

Python学习基础笔记三十四——爬虫小例子

一个爬虫小例子&#xff1a; import requestsimport re import jsondef getPage(url):responserequests.get(url)return response.textdef parsePage(s):comre.compile(<div class"item">.*?<div class"pic">.*?<em .*?>(?P<id&…

Nginx的access.log日志分析工具-goaccess

一、安装goaccess wget http://tar.goaccess.io/goaccess-1.3.tar.gz --no-check-certificate #下载tar包 tar -xzvf goaccess-1.3.tar.gz #解压tar包 cd goaccess-1.3/ #进入目录 ./configure --enable-utf8 --enable-geoiplegacy --prefix/opt/goaccess #检测环境&…

宝塔严重未知安全性漏洞(宝塔面板或Nginx异常)

问题简述 论坛上的帖子 https://www.bt.cn/bbs/thread-105054-1-1.html https://www.bt.cn/bbs/thread-105085-1-1.html https://hostloc.com/thread-1111691-1-1.html 数据库莫名被删 https://www.bt.cn/bbs/thread-105067-1-1.html 以下内容来自群友消息&#xff1a; 速报:宝…

大学生餐饮主题网页制作 美食网页设计模板 学生静态网页作业成品 dreamweaver美食甜品蛋糕HTML网站制作

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

以太网 网线分类

1. 双绞线分类 一类线&#xff1a;主要用于传输语音&#xff08;一类标准主要用于八十年代初之前的电话线缆&#xff09;&#xff0c;不同于数据传输。 二类线&#xff1a;传输频率为1MHZ&#xff0c;用于语音传输和最高传输速率4Mbps的数据传输&#xff0c;常见于使用4MBPS规范…

【Android gradle】自定义一个android gradle插件,并发布到私有Artifactory仓库

1. 前言 最近工作部分内容涉及到gradle 插件的编写&#xff0c;在粗浅了解和编码之余来简单梳理下编写一个gradle 插件的相关用法。这里编写的插件还是发布到在前面两篇博客中的Artifactory仓库中。一共分为如下几步&#xff1a; 配置定义gradle插件、上传到 Artifactory仓库…

基于单片机的加热炉炉温控制系统设计

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1课题背景及意义 1 1.2发展现状 2 1.3研究主要内容 3 第2章 加热炉炉温控制系统总体方案设计 4 2.1总体方案的确定 4 2.2加热炉炉温控制系统组成 5 第3章 加热炉炉温控制系统技术和算法介绍 6 3.1 AT89C51简介 6 3.1.1单片机的引脚介…

Crossover2023mac苹果电脑系统上运行Windows程序虚拟机工具模拟器

CrossOver是一款可以让Mac和Linux系统中正常运行Windows软件的应用程序。它不像虚拟机一样需要安装Windows系统之后才可以安装Windows的应用程序&#xff0c;这一方式给大多数用户带来了方便。通过CrossOver实现跨平台的文件复制粘贴&#xff0c;使Mac/Linux系统与Windows应用良…

海康视频回放,rtsp视频接口转换成.m3u8格式文件

通过海康接口返回的rtsp视频接口&#xff0c;转换成.m3u8格式文件&#xff0c;逻辑如下 1、采用ffmpeg实时转化rtsp链接视频&#xff0c;转化为m3u8&#xff0c;存放服务器固定地址 2、采用nginx代理视频成.m3u8视频 3、采用tokenredis方式处理视频播放和删除过程&#xff0…

太好玩了,我用 Python 做了一个 ChatGPT 机器人

大家好&#xff0c;我是早起。 毫无疑问&#xff0c;ChatGPT 已经是当下编程圈最火的话题之一&#xff0c;它不仅能够回答各类问题&#xff0c;甚至还能执行代码&#xff01; 或者是变成一只猫 因为它实在是太好玩&#xff0c;我使用Python将ChatGPT改造&#xff0c;可以实现在…

亚马逊黑五哑火,中国跨境电商高歌猛进!

黑五作为一个类似于中国双11的全球性购物狂欢节&#xff0c;在11月的最后一周拉开帷幕&#xff0c;据有关业内人士称&#xff0c;作为拥有众多全球站的亚马逊电子商务平台在此次黑色星期五的促销狂欢节中表现似乎稍显停滞&#xff0c;其作为电商领域的龙头企业&#xff0c;没能…

数据结构基础--图

一、图的基本概念 1.图的定义 图是由顶点集合V和边集合E组成的&#xff0c;记为G(G,V)。图可以只有点没有边&#xff0c;但不能只有边没有点。边&#xff1a;用&#xff08;x&#xff0c;y&#xff09;表示为xy之间的一条无向边&#xff1b;用<x,y>表示xy之间的一条有向…

大数据开发适合哪类人群?

有不少应届大学毕业生和0基础人群选择学大数据&#xff0c;但是要选择零基础的大数据培训班&#xff0c;从Java基础开始学习&#xff0c;由浅入深掌握离线数据分析、实时数据分析和内存数据计算等重要内容。 应届大学生缺乏工作经验和技能&#xff0c;对未来没有明确的规划&am…

VTK- PointLocator

欢迎大家加入VTK社区雪易VTK社区-CSDN社区云 小结&#xff1a;本博文主要针对VTK中的PointLocator的分类及各接口的用途进行讲解&#xff0c;PointLocator主要用途为点的位置计算&#xff0c;希望能为各位小伙伴有所帮助。 vtk中关于Locator的关系图 目录 vtkLocator vtkAbs…

软件测试基础理论体系学习4-单元测试的目的?概念是什么?过程是什么?

4-单元测试的目的&#xff1f;概念是什么&#xff1f;过程是什么&#xff1f;1 单元测试目的1.1 单元测试的错误认识1.2 单元测试的重要性1.2.1 时间方面1.2.2 测试效果1.2.3 测试成本1.2.4 产品质量1.3 单元测试的优点1.3.1 它是一种验证行为1.3.2 它是一种设计行为1.3.3 它是…

CPU是什么

CPU&#xff08;Central Processing Unit&#xff09;是计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元&#xff0c;相当于系统的“大脑”。当 CPU 过于繁忙&#xff0c;就像“人脑”并发处理过多的事情&#xff0c;会降低做事的效率&#xff0c;严…

Postman安装和运行

下载安装 Postman是一个方便用于构造请求的软件.可以以简单的方式来构造请求. 要下载软件,还是同样的话,要去官网下载.这里我们直接将官网地址放在这里. https://www.postman.com/downloads/ 进入官网以后,点击windows 64-bit(图中圈起来的部分)即可下载. 下载好以后双击安…

java小技能:JWT认证实现

文章目录 引言I. 预备知识1.1 关键字去空格处理II token组成2.1 头部(Header)2.2 有效载荷(Playload)2.3 签名(Signature)2.4 代码实现:生成tokenIII 验证token3.1 网关验证token3.2 使用拦截器验证token引言 认证流程 I. 预备知识 1.1 关键字去空格处理

前端复制粘贴方式上传图片

最近在做一个论坛的项目&#xff0c;发布评论的时候&#xff0c;很多时候会用到截图上传的功能&#xff0c;通过微信截图&#xff0c;QQ截图&#xff0c;直接将截取的图片通过Ctrlv 复制到输入框里&#xff0c;自动上传将图片渲染到页面上&#xff0c;今天就来实现一个这样的功…