[译]elasticsearch mapping

标签: | 发表时间:2013-11-01 00:09 | 作者:an74520
出处:http://blog.csdn.net/an74520

es的mapping设置很关键,mapping设置不到位可能导致索引重建。如何更好的设置mapping?

请看下面各个类型介绍^_^

core types

每一个JSON字段可以被映射到一个特定的核心类型。JSON本身已经为我们提供了一些输入,支持 stringinteger/ longfloat/ doubleboolean, and  null.

下面的示例tweet的JSON文档将被用来解释核心类型:

{  
    "tweet" {
        "user" : "kimchy"
        "message" : "This is a tweet!",
        "postDate" : "2009-11-15T14:12:12",
        "priority" : 4,
        "rank" : 12.3
    }
}

可以显式映射为上面的JSON tweet:

{  
    "tweet" : {
        "properties" : {
            "user" : {"type" : "string", "index" : "not_analyzed"},
            "message" : {"type" : "string", "null_value" : "na"},
            "postDate" : {"type" : "date"},
            "priority" : {"type" : "integer"},
            "rank" : {"type" : "float"}
        }
    }
}

string

基于文本的字符串类型是最基本的类型,包含一个或多个字符。可以映射一个例子:

{  
    "tweet" : {
        "properties" : {
            "message" : {
                "type" : "string",
                "store" : "yes",
                "index" : "analyzed",
                "null_value" : "na"
            }
        }
    }
}

上面的映射定义一个字符串消息属性/字段在tweet类型。字段存储在索引(所以它稍后可以被检索使用选择性加载搜索时),并得到分析(分解成可搜索条件)。如果该消息有一个空值,那么该值将被存储是na .

下表列出了所有的属性,可以使用字符串类型:

      Attribute                                                                 Description


  index_name                                   字段的名称,将存储在索引中。默认属性/字段名.   


   store                                            设置为yes来存储实际的字段索引,没有不存储它。默认为没                                                            有(注意,JSON文档本身是存储,可以从它检索)。


   index                                            为该领域设置为分析索引和搜索在被分解成令牌使用分析                                                              仪。不分析意味着其仍可搜索,但没有经过任何分析过程或分                                                          解为令牌。不意味着它不会搜索(作为一个单独字段,它可能仍                                                        然被包括在所有)。设置没有禁用包含在所有。默认为分析。 


  term_vector                                  可能的值是不,是的,与补偿,与职位,与位置偏移。默认为没                                                              有。


   boost                                            该boost的值,默认是1.0。


   null_value                                   当有一个(JSON)null值的字段,可以使用null值的字段值。默认                                                        为不添加字段在所有。 


   omit_norms                                   布尔值如果规范应该省略或不是。默认值为假的分析领域,适                                                          用于不分析领域。


   omit_term_freq_and_positions   布尔值如果术语和位置应该忽略频率。默认值为假。弃用自                                                          0.20,看到指数期权。


   index_options                             自从0.20可用。允许设置索引选项,可能的值是文档(只有doc                                                          数字索引),freqs(doc数字和词的频率),和职位(doc数字,词的频                                                        率和位置)。默认位置分析领域,和文档中没有分析领域。因为                                                        0.90也可以设置偏移量(doc数字,词的频率,位置和补偿)。


   analyzer                                       这个分析仪用于分析文本内容分析时在索引和搜索时使用查                                                          询字符串。默认为全球配置分析仪。

  index_analyzer                            这个分析仪用于分析文本内容分析时在索引。                        


   search_analyzer                          这个分析仪用于分析场当一部分查询字符串。可以更新现有                                                          的字段。


   include_in_all                            应该被包括在这个领域的所有字段(如果启用)。如果索引设置                                                        为无默认值为false,否则,默认为true或父对象类型设置。

   ignore_above                                这个分析器将忽略字符串大于这个尺寸。用于通用不分析领                                                           域,应该忽略长文本。(因为@0.19.9)。

   position_offset_gap                   位置增量字段实例之间的差距与相同的字段名。默认值为0。

字符串类型也支持自定义索引参数相关的索引值。例如:

{  
    "message" : {
        "_value":  "boosted value",
        "_boost":  2.0
    }
}

需要消除歧义的映射文档的含义。否则,该结构将解释“消息”作为“对象”类型的值。键值(或价值)在内部文档指定字符串内容,最终真正应该被编入索引。促进(或提高)键指定每个字段的文档增加(这里是2.0)。

number

许多类型的基础支持浮动,双,字节,短、整数和长。它使用特定的构造在Lucene为了支持数字值。数字类型有相同的范围作为相应的Java类型。一个例子可以映射:

{  
    "tweet" : {
        "properties" : {
            "rank" : {
                "type" : "float",
                "null_value" : 1.0
            }
        }
    }
}

在这里多举几个常用的例子:

例1:当某一个字段要分词搜索, 则index就要设置相应的分词器,store设置为true

例2:当某一个字段要facet(分组统计),则必须设置这个字段为no_analyzerd(不分词);原因是字段不设置分词,默认是一元分词。

例3:搜索关键字相应分数,对一些排名算法有一定的帮助,可以为一些重要字段设置分值(boost)

例4:时间格式问题,es支持format时间格式。(format:yyyy-MM-dd HH:mm:ss.SSS)

……

本文出自  http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html#mapping-core-types




作者:an74520 发表于2013-10-31 16:09:15 原文链接
阅读:3532 评论:2 查看评论

相关 [elasticsearch mapping] 推荐:

[译]elasticsearch mapping

- - an74520的专栏
es的mapping设置很关键,mapping设置不到位可能导致索引重建. 请看下面各个类型介绍^_^. 每一个JSON字段可以被映射到一个特定的核心类型. JSON本身已经为我们提供了一些输入,支持 string,  integer/ long,  float/ double,  boolean, and  null..

elasticsearch文档-字段的mapping

- - 开源软件 - ITeye博客
elasticsearch文档-字段的mapping. Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types"的documents,ES允许每个mapping type关联多个mapping定义.

elasticsearch更改mapping(不停服务重建索引)

- - zzm
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段. 但现实往往并非如此啊,有时增加一个字段,就好像打了一个补丁,一个可以,但是越补越多,最后自己都觉得惨不忍睹了. 这里有一个方法修改mapping,那就是重新建立一个index,然后创建一个新的mapping.

用户体系搭建之ID-Mapping

- - 标点符
在推进用户画像和风险控制时,遇到的最大的问题是用户身份信息的混乱:. 相同用户,不同渠道下账号不相同,如微信小程序和APP. 同个用户,在不同的设备商登录. ID-Mapping是大数据分析中非常基本但又关键的环节,ID-Mapping通俗的说就是把几份不同来源的数据,通过各种技术手段识别为同一个对象或主题,例如同一台设备(直接),同一个用户(间接),同一家企业(间接)等等,可以形象地理解为用户画像的“拼图”过程.

Elasticsearch as Database - taowen - SegmentFault

- -
【北京上地】滴滴出行基础平台部招聘 Elasticsearch 与 Mysql binlog databus 开发工程师. 内推简历投递给: [email protected]. 推销Elasticsearch. 时间序列数据库的秘密(1)—— 介绍. 时间序列数据库的秘密(2)——索引.

es的mapping设置 - 一只自由自在的鱼 - 博客园

- -
 自定义mapping的api. #mappings关键字. mapping中字段类型一旦设定后 禁止直接修改. 因为lucene实现的倒排索引生成后不允许修改. 除非重建索引映射,然后做reindex操作. 1,POST _reindex { "source": {"index":"旧索引"}, "dest": {"index":"备份索引"} } 2,删除旧索引 3,新索引建立mapping 4,POST _reindex { "source": {"index":"备份索引"}, "dest": {"index":"新索引"} }.

数仓建模—ID Mapping - 大数据技术派 - 博客园

- -
早晨起床的时候,发现自己尿分叉,我没有多想,简单洗洗就匆忙出门. 路过早餐店,我看到师傅熟练的拉扯一小块面团,拉至细长条,然后放入油锅中,不一会功夫,一根屎黄色的油条便出锅了,卖相不错. 我在想,小到炸屎黄色的油条,大到学习,其实都是一个熟能生巧的过程. 数据仓库系列文章(持续更新). 数仓—ID Mapping.

ElasticSearch 2 的节点调优(ElasticSearch性能)

- - 行业应用 - ITeye博客
一个ElasticSearch集群需要多少个节点很难用一种明确的方式回答,但是,我们可以将问题细化成一下几个,以便帮助我们更好的了解,如何去设计ElasticSearch节点的数目:. 打算建立多少索引,支持多少应用. elasticsearch版本: elasticsearch-2.x. 需要回答的问题远不止以上这些,但是第五个问题往往是容易被我们忽视的,因为单个ElasticSearch集群有能力支持多索引,也就能支持多个不同应用的使用.

Elasticsearch:使用 Elasticsearch 进行语义搜索

- - 掘金 后端
在数字时代,搜索引擎在通过浏览互联网上的大量可用信息来检索数据方面发挥着重要作用. 此方法涉及用户在搜索栏中输入特定术语或短语,期望搜索引擎返回与这些确切关键字匹配的结果. 虽然关键字搜索对于简化信息检索非常有价值,但它也有其局限性. 主要缺点之一在于它对词汇匹配的依赖. 关键字搜索将查询中的每个单词视为独立的实体,通常会导致结果可能与用户的意图不完全一致.

elasticsearch的javaAPI之query

- - CSDN博客云计算推荐文章
elasticsearch的javaAPI之query API. the Search API允许执行一个搜索查询,返回一个与查询匹配的结果(hits). 它可以在跨一个或多个index上执行, 或者一个或多个types. 查询可以使用提供的 query Java API 或filter Java API.