博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详解ElasticSearch的store属性
阅读量:7108 次
发布时间:2019-06-28

本文共 1290 字,大约阅读时间需要 4 分钟。

hot3.png

    在Elasticsearch创建mapping的时候,需要制定store属性和index属性,对于刚入门es的学者,通常对lucene又不熟悉的人,通常不知道如何设置这两个值。

    先来看需求:

    在做搜索时,经常会需要对一个分类进行分 组,比如搜索"ipad",需要在平板电脑分类下面统计有多少个商品,在电脑配件下面统计有多少个商品,这种统计数量的需求,我们通常会在 document里面添加一个分类ID,然后对所有的分类做facet。那么问题出来了,如果分类ID是个整数的话,store属性应该设置true or false?这种整数是否还需要索引?

    这个问题,在ES的文档中怎么也找不到,个人一开始又对lucene不熟悉,所以花时间看了一下lucene。通过学习lucene及实际的实践得出,以上需求的设置store应该为no,而index应该设置为not_analyzied

 

    下面我们来仔细理解一下这两个设置项。

    其中index的含义还比较容易理解,一 共3个值,no,analyzied,not_analyzied,分别对应'不对该字段进行索引(无法搜索)','分词后索引','以单个关键词进行索 引'。就是说,如果这个字段不需要搜索,一般不需要设置为analyzied,但是如果不搜索,针对以上的需求,index应该设置为no吗?请继续往下 看。

    通常分类在索引的时候都是一个整数或长整数,对应lucene的IntField或LongField,而这两个类在lucene中的第一行注释是:Field that indexes int values for efficient range filtering and sorting.(Field that indexes long values for efficient range filtering and sorting),也就是说,IntField是被索引的,并且这种索引在范围过滤和排序的时候性能非常高。那么问题就很明确了,因为,我们的分类字段也是作为filter项的,因此如果要做过滤,必须进行索引。否则可能无法作为过滤条件。

 

    实际上,我们在创建mapping的时 候,如果设置了数据类型为integer,其他的都未指定,默认的index即为no_analyzied。至于store,采用默认值也是合适的(默认 为no),实际上这些默认值都是lucene的默认值。因为一般我们是用不到store='yes'的功能的,除非,我们需要对某个域(就是字段)进行高 亮显示。

 

    你可能会问,如果设置store:"no",会不会影响facet的性能。答案为不会,因为做facet的时候并不会使用store的字段,而是使用的索引表的词。也就是后面设置的index:'not_analyzied"。

 

    我自己做过一个测试,如果设置分类ID不索引,则无法进行facet,可见任何需要facet的字段,必须进行索引。    

    请支持原创:

转载于:https://my.oschina.net/xiaohui249/blog/232788

你可能感兴趣的文章
一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成
查看>>
【Linux】执行 service iptables save 命令异常解决
查看>>
Centos 7 安装 ffmpeg 3.1
查看>>
我的 Vue.js 学习日记 (一)
查看>>
JSONP跨域
查看>>
如何用 CSS + HTML + JS 创建桌面应用
查看>>
前端如何让网页打印时每一页都有固定的头部,且在达到固定高度时自动分页...
查看>>
WPF:Animation动画--KeyFramesExample帧动画(2)
查看>>
FFMPEG vaapi_encoder 源码阅读
查看>>
h5实现移动端图片预览器(一)
查看>>
支付-收款
查看>>
vue项目打包后想发布在apache www/vue 目录下
查看>>
MixPHP 独特的SQL构建方式
查看>>
PHP简洁之道
查看>>
丁香园开源接口管理系统
查看>>
Burpsuite学习(3)
查看>>
一个Visual Studio Code编辑场景
查看>>
WordPress版微信小程序开发系列(一):WordPress REST API
查看>>
用gomock进行mock测试
查看>>
我的面试准备过程--ubuntu使用过程记录
查看>>