标签:数加 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