码迷,mamicode.com
首页 > 移动开发 > 详细

(11)ElasticSearch mapping解释与说明

时间:2019-08-31 17:15:38      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:数加   pos   映射   核心数据类型   查询   ping   ppi   完成   提示   

在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解释与说明

标签:数加   pos   映射   核心数据类型   查询   ping   ppi   完成   提示   

原文地址:https://www.cnblogs.com/javasl/p/11405368.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!