Elasticsearch(四)----Elasticsearch中的mapping问题
程序员文章站
2024-03-25 11:19:46
...
Mapping在Elasticsearch中是非常重要的一个概念。决定了一个index中的field使用什么数据格式存储,使用什么分词器解析,是否有子字段等
1.问题:为什么要学习Mapping
如果没有mapping所有text类型属性默认都使用standard分词器。所以如果希望使用IK分词就必须配置自定义mapping。
2.mapping核心数据类型
Elasticsearch中的数据类型有很多,在这里只介绍常用的数据类型。
只有text类型才能被分词。其他类型不允许。
文本(字符串):text
整数:byte、short、integer、long
浮点型:float、double
布尔类型:boolean
日期类型:date
数组类型:array {a:[]}
对象类型:object {a:{}}
不分词的字符串(关键字): keyword
3.查看索引mapping
可以通过命令查看已有index的mapping具体信息,语法如下:
GET 索引名/_mapping
如:
GET test_index/_mapping
结果:
{
"test_index": { # 索引名
"mappings": { # 映射列表
"test_type": { # 类型名
"properties": { # 字段列表
"age": { # 字段名
"type": "long" # 字段类型
},
"gender": {
"type": "text",
"fields": { # 子字段列表
"keyword": { # 子字段名
"type": "keyword", # 子字段类型,keyword不进行分词处理的文本类型
"ignore_above": 256 # 子字段存储数据长度
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
4.创建索引时指定mapping
语法:
PUT 索引名称
{
"mappings":{
"类型名称":{
"properties":{
"字段名":{
"type":类型,
["analyzer":字段的分词器,]
["fields":{
"子字段名称":{
"type":类型,
"ignore_above":长度限制
}
}]
}
}
}
}
}
#创建一个用户索引,
#需求:有name(姓名),address(地址),名称不分词,地址使用IK分词器
PUT /user_index
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
}
, "mappings": {
"user_type":{
"properties":{
"name":{
"type":"keyword"
},
"address":{
"type":"text",
"analyzer":"ik_max_word"
}
}
}
}
}
5.为已有索引添加新的字段mapping
语法:
PUT user_index/_mapping/user_type
{
"properties": {
"class":{
"type":"keyword"
},
"mather":{
"type": "text",
"analyzer": "ik_smart"
}
}
}
6.测试不同的字段的分词器
#测试索引的field是否可以分词,只能是text类型
GET user_index/_analyze
{
“field”: “address”,
“text”: “我是小明,帅哥一枚,女朋友无数”
}
推荐阅读
-
Elasticsearch(二) Elasticsearch中的Mapping映射, 更新mapping和添加mapping
-
Elasticsearch(四)----Elasticsearch中的mapping问题
-
ElasticSearch集群中client节点出现ping不通,不可访问问题 Luceneelasticsearchjavajvmopenfile
-
elasticsearch2.0源码在开发环境eclipse中启动的问题及解决方案 博客分类: 开源软件 elasticsearch
-
elasticsearch2.0源码在开发环境eclipse中启动的问题及解决方案 博客分类: 开源软件 elasticsearch
-
Elasticsearch在Java中的基本使用
-
记一次ElasticSearch 更改 mapping 字段类型的过程
-
(四)elasticsearch之mapping详解和数据类型
-
elasticsearch中term与match的区别讲解
-
Hbase、elasticsearch整合中jar包冲突的问题解决