elasticsearc之mapping的介绍

为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了什么类型。这些类型和字段的信息存储(包含)在映射(mapping)中。

Elasticsearch支持以下简单字段类型:

类型 表示的数据类型
String string
Whole number byteshortintegerlong
Floating point floatdouble
Boolean boolean
Date date

 查看索引的mapping

[[email protected] es]# curl -GET "http://192.168.10.49:9200/site_test/test/_mapping"

{
"site_test":
     {
 "mappings":
      {
  "test":
       {
   "properties":
        {
        "@timestamp":
           {
              "type":"date",
              "format":"strict_date_optional_time||epoch_millis"
           },
         "count":
          {
              "type":"long"
           },
          "brower":
          {
          "type":"string"
          }
        }
      }
    }
  }
}

原创地址:http://irow10.blog.51cto.com/2425361/1851001

上面的mapping中我们可以看到这个索引中有三个变量,分别是date类型,long类型和string类型

我们也可以用其他方式查看mapping。用head插件查看索引的索引信息

其中string类型的字段,默认的,考虑到包含全文本,它们的值在索引前要经过分析器分析,并且在全文搜索此字段前要把查询语句做分析处理。也就是说只要定义为string的字段默认会按照一个规则拆分字段。如:hello100 会拆分成 hello  100两个字段。汉字会拆成一个个的。这样在画图是就尴尬了!

下图是elasticsearch中head插件查询到的数据

windows 8.1这个字段就是上面mapping对应的brower。类型是string。

我们在kibana的setting查看下site_test各个字段的信息

string类型的brower在analyzed(分析)这选项中打勾了!

现在我们用kibana画图试试看看会不会有什么异常

怎么windows和8.1分成两个字段画图了,这不是我们想要的结果。那该如何解决呢?

自定义mapping

因为重新更改一个索引的mapping,必须新建索引。

[[email protected] es]# curl -XPOST http://192.168.10.49:9200/site_test
{"acknowledged":true}

把新建的mapping放入一个文件类:mapping

{
  "test":
       {
   "properties":
        {
         "@timestamp":
               {
              "type":"date",
              "format":"strict_date_optional_time||epoch_millis"
                },
          "count":
                {
               "type":"long"
                },
           "brower":
                {
               "type":"string",
               "index": "not_analyzed"
                }
          }
      }
  }

对brower字段额外加个属性not_analyzed(不分词)!

[[email protected] es]# curl -XPOST "http://192.168.10.49:9200/site_test/test/_mapping?pretty" -d ‘@mapping‘
{
  "acknowledged" : true
}

这样就把索引和mapping都定义好了 然后在导入数据就不会出现分词的情况!

备注:如果有多个_type,定义一个就好,其他的会按照定义好的格式去自己扩建mapping。

当然我们也可以把上面两步做到一步到位。如下:

curl -XPUT ‘http://192.168.10.49:9200/site_test‘ -d ‘@mapping‘

上面这条命令能完成建立索引和mapping。

时间: 2024-10-29 01:09:56

elasticsearc之mapping的介绍的相关文章

django 之 orm

ORM(Object Relational Mapping) ORM介绍 orm概念 对象关系映射(object Relational Mapping简称ORM )模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说 ORM 是通过使用秒速对象和数据库之间映射的元数据 将程序中的对象自动持久化到关系数据库中. ORM 在业务逻辑层和数据库层之间充当桥梁做用 ORM 的由来 让我们从O/R开始.字母O起源于"对象"(Object),而R则来自于"关系&q

轻量级 .Net OR Mapping 工具 Drapper 介绍

参考http://www.cnblogs.com/Sinte-Beuve/p/4231053.html?utm_source=tuicool&utm_medium=referralhttp://www.cnblogs.com/finesite/archive/2012/08/23/2652491.htmlhttp://www.renfb.com/blog/2011/Article/335 http://www.cnblogs.com/shanyou/archive/2013/01/25/2877

心智图/思维导图(Mind Map/Mind Mapping),思维导图介绍

心智图(Mind Map),又称脑图.心智地图.脑力激荡图.思维导图.灵感触发图.概念地图.树状图.树枝图或思维地图,是一种图像式思维的工具以及一种利用图像式思考辅助工具来表达思维的工具. 心智图是使用一个中央关键词或想法引起形象化的构造和分类的想法; 它用一个中央关键词或想法以辐射线形连接所有的代表字词.想法.任务或其它关联项目的图解方式.它可以利用不同的方式去表现人们的想法,如引题式,可见形象化式,建构系统式和分类式.它是普遍地用作在研究.组织.解决问题和政策制定中. 心智图是一张集中了所有

redis应用之安装配置介绍

一.redis介绍: 1.redis定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都

NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系统.之前没用过这两个框架,也算是先学现买,在做完设计之 后花了一周搭建成功了.其中,还加上了我的一些改进思想,把DAO和BLL之中相似且常用的增删改查通过泛型T抽象到了DAO和BLL的父类中,其DAO 和BLL子类只需继承父类就拥有了这些方法.和之前的一个数据库表(视图)对应一个实体,一个实体对应一

第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理

第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字段的类型以及相关属性elasticsearch会根据json源数据的基础类型猜测你想要的字段映射,将输入的数据转换成可搜索的索引项,mapping就是我们自己定义的字段数据类型,同时告诉elasticsearch如何索引数据以及是否可以被搜索 作用:会让索引建立的更加细致和完善 类型:静态映射和动态

详细介绍spring框架(下篇)

上篇简单介绍了spring,下面详细介绍为什么需要spring框架? Spring带给我们什么 方便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合.有了Spring,用户不必再为单实例模式类.属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用. AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付. 声明式事务的支持 在

NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)

映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin

ElasticSearch 基础(4) - Mapping

一.Mapping概述 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成Full-text或者精确的字符串值. ES需要知道每个字段里面都包含了什么类型.这些类型和字段的信息存储(包含)在映射(mapping)中. 索引中每个文档都有一个类型(type).每个类型都拥有自己的映射(mapping)或者模式定义(schema definition). 一个映射定义了字段类型,每个字段的数据类型,以及字段被Elasticsearch处理的方式.映射还用于设置关联到类型上的元数据