(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解释与说明的主要内容,如果未能解决你的问题,请参考以下文章
Linux环境 安装elasticsearch-6.4.3 单机版不能以root用户运行es 及 max_map_count 问题解决(含 安装包+分词插件 云盘资源)