Elasticsearch映射关系之给索引数据添加映射关系
1、我们先创建一个user的索引
PUT 方式请求:
http://127.0.0.1:9200/user
2、创建成功后,我们再给 user 索引建立一个映射关系,成功后会返回 true
PUT 方式请求:
http://127.0.0.1:9200/user/_mapping
{
"properties" : {
"name" : {
"type" : "text",
"index" : true
},
"sex" : {
"type" : "keyword",
"index" : true
},
"mobile" : {
"type" : "keyword",
"index" : false
}
}
}
3、此时可以看到user索引和映射关系已经创建完成了
4、接下来我们就可以给user索引创建文档数据了
PUT 方式请求:
http://127.0.0.1:9200/user/_create/1001
{
"name" : "张三",
"sex" : "男性",
"mobile" : 13888888888
}
5、查询user索引文档数据中有没有name包含“三”这个字的数据
GET 方式请求:
http://127.0.0.1:9200/user/_search
{
"query" : {
"match" : {
"name" : "三"
}
}
}
可以看到,我们把刚刚添加进去的数据查询出来了,
我们只输入了一个“三”字就可以把数据查询出来,type = text 时候说明有分词的功能
6、我们继续查询,这次根据sex性别这个字段进行查询
{
"query" : {
"match" : {
"sex" : "男"
}
}
}
可以看到,我们并没有查询到数据。
当我们换成“男性”时,看到可以查询出来,
所以说 type = keyword 时,说明这是关键字,没有分词查询的功能
7、我们继续查询最后一个字段 mobile 手机号
我们可以看到手机号是跟创建时的数据是一致的
{
"query" : {
"match" : {
"mobile" : 13888888888
}
}
}
但是执行查询时,直接提示
failed to create query: Cannot search on field [mobile] since it is not indexed
创建查询失败:
无法在字段[mobile]上搜索,因为它没有被索引,所有,如果 index = false 时,该字段是不能被查询的
相关文章