如何设计es的索引库结构

导读:本篇文章讲解 如何设计es的索引库结构,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、确定索引库的名称

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

比如:数据库的表名为

如何设计es的索引库结构

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

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

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

例如:

如何设计es的索引库结构

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

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

除此之外,还需要

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"
	  }
	}
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/65851.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!