`
donlianli
  • 浏览: 336229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:216542
社区版块
存档分类
最新评论

Elasticsearch store属性理解

阅读更多
在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的字段,必须进行索引。
 
请支持原创:

 http://donlianli.iteye.com/blog/1975727

 

 

 

 

 

对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间
0
0
分享到:
评论
2 楼 sp42 2016-06-16  
通俗易懂 谢谢哦
1 楼 dizh 2014-08-11  
谢谢,写的很好~

相关推荐

    Elasticsearch-深入理解索引原理

    Elasticsearch-深入理解索引原理

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    深入理解ElasticSearch PDF

    深入理解ElasticSearch PDF 深入理解ElasticSearch PDF

    elasticsearch-8.2.3 windows 版本

    elasticsearch-8.2.3 windows 版本。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的...

    最新版本springboot集成elasticsearch

    一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela

    elasticsearch-7.17.6及对应版本IK分词

    elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...

    es docker 部署 elasticsearch.yml

    docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...

    elasticsearch-6.8.3-API文档-中文版.zip

    赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...

    elasticsearch-6.3.0-API文档-中文版.zip

    赠送jar包:elasticsearch-6.3.0.jar; 赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档...

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    Elasticsearch 架构图

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布...架构图方便理解Elasticsearch

    ElasticSearch实战 in Action.zip

    ElasticSearch实战 in Action(原著原版)压缩包,ElasticSearch文档,ES全文检索从入门到精通,高清PDF,是学习es和精通es必备手册,能快速达到精通ElasticSearch,一册在手,ElasticSearch无忧,开发、学习、调优...

    elasticsearch-6.8.3-API文档-中英对照版.zip

    赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...

    ElasticSearch数据导出

    ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件

    ElasticSearch官网文档中文版

    ElasticSearch官网文档中文版

    Elasticsearch 开发手册

    Elasticsearch 开发手册

    ElasticSearch Java API 中文文档

    ElasticSearch Java API 中文文档 ElasticSearch Java API 中文文档

    Elasticsearch 开机自启脚本

    Elasticsearch 开机自启脚本,方便用户自动启动Elasticsearch,也可以直接用systemctl启动或是关闭

    elasticsearch-shield-2.3.2.jar

    1、进入到Elasticsearch的安装路径下,本文中以该路径为例子:/ultra/ES/elasticsearch-2.3.4。先安装license,执行以下命令: ./bin/plugin install license 2、再安装shield,执行以下命令: ./bin/plugin ...

Global site tag (gtag.js) - Google Analytics