文章目录
1、创建映射字段
json
PUT /索引库名/_mapping
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
json
POST /atguigu/_mapping
{
"properties": {
"title": {
"type": "text",
"index": true,
"analyzer": "ik_max_word"
},
"images": {
"type": "keyword",
"index": false
},
"price": {
"type": "double"
}
}
}
您提供的 POST 请求是用于在 Elasticsearch 中为名为 atguigu
的索引(如果该索引尚不存在,则创建它)设置映射(mapping)的。这个请求看起来是正确的,但是有几个小细节和潜在的问题需要注意:
-
索引的存在性 :如果索引
atguigu
已经存在,并且已经有了不同的映射配置,那么直接发送这个 POST 请求可能会导致错误,因为 Elasticsearch 不允许更改已存在字段的类型或某些其他属性。在这种情况下,您可能需要先删除索引(如果数据允许的话),或者创建一个新的索引。 -
字段类型:
title
字段被设置为text
类型,这是正确的,因为text
类型用于全文搜索,可以包含大量文本,并且支持分词。您还指定了analyzer
为ik_max_word
,这是一个常见的用于中文分词的分析器。images
字段被设置为keyword
类型,并且index
被设置为false
。这意呀着images
字段的内容将不会被索引,因此无法通过该字段进行搜索。如果您的目的是存储图像链接但不通过它们进行搜索,这是合适的。但请注意,如果您希望在将来能够通过这些图像链接进行搜索,您应该将其index
设置为true
。price
字段被正确地设置为double
类型,适用于存储浮点数。
-
发送请求:
- 确保您正在向正确的 Elasticsearch 节点和端口发送请求。
- 确保您有权限对索引进行写操作。
- 如果您正在使用某种形式的客户端(如 curl、Postman、Elasticsearch 客户端库等)来发送此请求,请确保请求的格式正确(包括正确的 HTTP 头和可能的认证信息)。
-
响应检查:
- 检查 Elasticsearch 返回的响应以确保映射已成功应用。
- 如果遇到错误,请仔细阅读错误消息以获取有关问题的更多信息。
以下是一个使用 curl 发送类似请求的示例(假设 Elasticsearch 正在本地运行,并且没有启用认证):
bash
curl -X POST "http://localhost:9200/atguigu/_mapping" -H 'Content-Type: application/json' -d'
{
"properties": {
"title": {
"type": "text",
"index": true,
"analyzer": "ik_max_word"
},
"images": {
"type": "keyword",
"index": false
},
"price": {
"type": "double"
}
}
}'
请根据您的实际 Elasticsearch 配置(如主机名、端口和可能的认证要求)调整此命令。
2、查看映射关系
json
GET /索引库名/_mapping
GET /atguigu/_mapping