(11)ElasticSearch mapping解释与说明

Posted javasl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(11)ElasticSearch mapping解释与说明相关的知识,希望对你有一定的参考价值。

在es中,执行一个PUT操作,es会自动创建索引,自动创建索引下的类型,其实es还创建了mapping。如下,先创建一个文档:

PUT /myindex/article/1

  "post_date":"2018-05-10",
  "title":"Java",
  "content":"java is the best language",
  "author_id":119

查看mapping的语句:GET /myindex/article/_mapping。结果如下:


  "myindex": 
    "mappings": 
      "article": 
        "properties": 
          "author_id": 
            "type": "long"
          ,
          "content": 
            "type": "text",
            "fields": 
              "keyword": 
                "type": "keyword",
                "ignore_above": 256
              
            
          ,
          "post_date": 
            "type": "date"
          ,
          "title": 
            "type": "text",
            "fields": 
              "keyword": 
                "type": "keyword",
                "ignore_above": 256
              
            
          
        
      
    
  

可以看到查询出了索引是myindex、类型是article。

author_id字段类型是long;content类型是text;post_date类型是date;title类型是text。es会自动识别字段类型。

es是支持数据类型的,它自动创建的映射是动态映射(dynamic mapping)。

es支持的数据类型如下:

(1)核心数据类型(Core datatype)

  字符串 :string,包括 text和keyword。text类型被用来索引长文本。在建立索引前会将这些文本进行分词,转化为词的组合。建立索引,允许es来检索这些词语。text类型不能用来排序和聚合。keyword类型不需要进行分词。可以被用来检索过滤、排序和聚合。keyword类型字段只能用本身来进行检索。

  数字型:long、integer、short、byte、double、float

  日期型:date

  布尔型:boolean

  二进制型:binary

日期、数值型不会分词,只能全部匹配查询,字符串可以分词,能模糊查询,举例如下:

添加如下两条数据,结合开始添加的数据,共3条数据:

PUT /myindex/article/2

  "post_date":"2018-05-12",
  "title":"html",
  "content":"i like html",
  "author_id":120


PUT /myindex/article/3

  "post_date":"2018-05-16",
  "title":"es",
  "content":"Es is distributed document store",
  "author_id":110

执行查询,结果:

GET /myindex/article/_search?q=post_date:2018  不会查出数据

GET /myindex/article/_search?q=post_date:2018-05  不会查出数据

GET /myindex/article/_search?q=post_date:2018-05-10  会查出数据

GET /myindex/article/_search?q=html  会查出数据

GET /myindex/article/_search?q=java  会查出数据

支持的属性:
"store": 字段上的值是不是被存储,如果没有存储就只能搜索,不能获取值,默认false,不存储
"index": true//分词,false//不分词,字段将不会被索引
"analyzer": "ik"//指定分词器,默认分词器为standard analyzer
"boost": 1.23//字段级别的分数加权,默认值是1.0
"ignore_above": 100//超过100个字符的文本,将会被忽略,不被索引
"search_analyzer": "ik"//设置搜索时的分词器,默认跟ananlyzer是一致的,比如index时用standard+ngram,搜索时用standard来完成自动提示功能。

 

以上是关于(11)ElasticSearch mapping解释与说明的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch Mapping映射入门

Linux环境 安装elasticsearch-6.4.3 单机版不能以root用户运行es 及 max_map_count 问题解决(含 安装包+分词插件 云盘资源)

ElasticSearch实战-索引Mapping参数设计

elasticsearch 之mapping

Elasticsearch实践:Mapping

Elasticsearch系列---初识mapping