文档章节

elasticsearch mapping

a
 allantaylor81
发布于 2015/08/12 14:53
字数 1232
阅读 123
收藏 0

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

本文转载自:http://blog.csdn.net/an74520/article/details/13772619

共有 人打赏支持
a
粉丝 2
博文 120
码字总数 2912
作品 0
东城
私信 提问
ElasticSearch开发问题汇总(不断更新中)

1、Mapping: [译]ElasticSearch数据类型--string类型已死, 字符串数据永生 ElasticSearch动态日期映射 2、Spring Data Elasticsearch: Spring Data Elasticsearch教程...

九州暮云
2018/07/18
0
0
elasticsearch搜索建议Completion Suggester

目的:实现淘宝、京东搜索建议功能 准备环境:安装elasticsearch, 并安装拼音插件(https://github.com/medcl/elasticsearch-analysis-pinyin)。我安装的环境为当前最新版6.2.4。 参考官网教...

杰仪
2018/05/12
0
0
ES6-映射(mapping)

1.mapping映射概述 我们习惯上对ElasticSearch和数据库做了一些对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构。 ElasticSearch中的映射(M...

贾峰uk
2018/07/02
0
0
Elasticsearch 的坑爹事——记录一次mapping field修改过程

Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的mapping ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

allantaylor81
2015/08/12
0
0
高性能Elasticsearch ORM开发库bboss es 5.0.3.7.8发布

bboss es v5.0.3.7.8已发布。bboss elasticsearch是一套基于query dsl语法操作访问分布式搜索引擎elasticsearch的o/r mapping开发库,底层基于es restful api。使用bboss es,可以快速编写出...

bboss
2017/11/16
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

开启genelog

打开genelog genelog 可以记录数据库的操作语句。 首先进入mysql, mysql -u root -p 设置日志位置 set global general_log_file = "/tmp/general.log"; 设置全局global模式 set global gen......

狼王黄师傅
8分钟前
0
0
Java 帝国对 Python 的渗透能成功吗?哈哈

引子 Java 帝国已经成立20多年,经过历代国王的励精图治,可以说是地大物博,码农众多。 可是国王依然不满足,整天想着如何继续开拓疆土, 这一天晚上他又把几个重臣招来商议了。 IO大臣说:...

边鹏_尛爺鑫
今天
5
0
分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
今天
6
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
今天
2
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部