zoukankan      html  css  js  c++  java
  • ElasticSearch(二十七)type的数据结构

    1.什么是type?

      type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器
    field的value,在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的。
      lucene是没有type的概念的,在document中,实际上将type作为一个document的field来存储,即_type,es通过_type来进行type的过滤和筛选

    2.type的数据结构是怎么存储的?

      一个index中的多个type,实际上是放在一起存储的,因此一个index下,不能有多个type重名,而类型或者其他设置不同的,因为那样是无法处理的。

    比如说一个index下有这样两个type:

    {
       "ecommerce": {
          "mappings": {
             "elactronic_goods": {
                "properties": {
                   "name": {
                      "type": "string",
                   },
                   "price": {
                      "type": "double"
                   },
               "service_period": {
              "type": "string"
               }            
                }
             },
             "fresh_goods": {
                "properties": {
                   "name": {
                      "type": "string",
                   },
                   "price": {
                      "type": "double"
                   },
               "eat_period": {
              "type": "string"
               }
                }
             }
          }
       }
    }

    新增两条document:

    {
      "name": "geli kongtiao",
      "price": 1999.0,
      "service_period": "one year"
    }
    
    {
      "name": "aozhou dalongxia",
      "price": 199.0,
      "eat_period": "one week"
    }

    在底层的存储是这样子的。。。。

    {
      "_type": "elactronic_goods",
      "name": "geli kongtiao",
      "price": 1999.0,
      "service_period": "one year",
      "eat_period": ""
    }
    
    {
      "_type": "fresh_goods",
      "name": "aozhou dalongxia",
      "price": 199.0,
      "service_period": "",
      "eat_period": "one week"
    }

    3.在同一个index下是否要建立多个type?

    最佳实践,将类似结构的type放在一个index下,这些type应该有多个field是相同的
    假如说,你将两个type的field完全不同,放在一个index下,那么就每条数据都至少有一半的field在底层的lucene中是空值,会有严重的性能问题

     

  • 相关阅读:
    转:mac下安装homebrew
    jdk1.7下载路径
    转: Mac 使用ADT的问题
    转:mac下安装Sublime Text
    转: SVN和Git的一些用法总结
    转: SVN使用教程总结(图文丰富,相当详细)
    转:Tortoise SVN 版本控制常用操作知识
    Android Java混淆(ProGuard)
    转:美团Android资源混淆保护实践
    【IPC进程间通讯之三】内存映射文件Mapping File
  • 原文地址:https://www.cnblogs.com/ql211lin/p/10926409.html
Copyright © 2011-2022 走看看