Явное отображение
Вам известно больше о ваших данных, чем Elasticsearch может угадать, поэтому, хотя динамическое отображение может быть полезным для начала, в какой-то момент вам захочется указать собственные явные отображения.
Вы можете создать отображения полей, когда вы создаёте индекс и добавляете поля в существующий индекс.
Создать индекс с явным отображением
Вы можете использовать API создания индекса для создания нового индекса с явным отображением.
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"age": {
"type": "integer"
},
"email": {
"type": "keyword"
},
"name": {
"type": "text"
}
}
},
)
print(resp) response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
age: {
type: 'integer'
},
email: {
type: 'keyword'
},
name: {
type: 'text'
}
}
}
}
)
puts response res, err := es.Indices.Create(
"my-index-000001",
es.Indices.Create.WithBody(strings.NewReader(`{
"mappings": {
"properties": {
"age": {
"type": "integer"
},
"email": {
"type": "keyword"
},
"name": {
"type": "text"
}
}
}
}`)),
)
fmt.Println(res, err) const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
age: {
type: "integer",
},
email: {
type: "keyword",
},
name: {
type: "text",
},
},
},
});
console.log(response); PUT /my-index-000001
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
} Добавить поле в существующее отображение
Вы можете использовать API обновления отображения для добавления одного или нескольких новых полей в существующий индекс.
Следующий пример добавляет employee-id, поле типа keyword с параметром отображения index со значением false. Это означает, что значения поля employee-id хранятся, но не индексируются и недоступны для поиска.
resp = client.indices.put_mapping(
index="my-index-000001",
properties={
"employee-id": {
"type": "keyword",
"index": False
}
},
)
print(resp) response = client.indices.put_mapping(
index: 'my-index-000001',
body: {
properties: {
"employee-id": {
type: 'keyword',
index: false
}
}
}
)
puts response res, err := es.Indices.PutMapping(
[]string{"my-index-000001"},
strings.NewReader(`{
"properties": {
"employee-id": {
"type": "keyword",
"index": false
}
}
}`),
)
fmt.Println(res, err) const response = await client.indices.putMapping({
index: "my-index-000001",
properties: {
"employee-id": {
type: "keyword",
index: false,
},
},
});
console.log(response); PUT /my-index-000001/_mapping
{
"properties": {
"employee-id": {
"type": "keyword",
"index": false
}
}
} Обновить отображение поля
За исключением поддерживаемых параметров отображения, вы не можете изменить отображение или тип поля существующего поля. Изменение существующего поля может сделать недействительными данные, которые уже проиндексированы.
Если вам необходимо изменить отображение поля в базовых индексах потока данных, см. Изменение отображений и настроек для потока данных.
Если вам необходимо изменить отображение поля в других индексах, создайте новый индекс с правильным отображением и переиндексируйте данные в этот индекс.
Переименование поля сделает недействительными данные, уже проиндексированные под старым именем поля. Вместо этого добавьте поле alias для создания альтернативного имени поля.
Просмотреть отображение индекса
Вы можете использовать API получения отображения для просмотра отображения существующего индекса.
resp = client.indices.get_mapping(
index="my-index-000001",
)
print(resp) response = client.indices.get_mapping( index: 'my-index-000001' ) puts response
res, err := es.Indices.GetMapping(es.Indices.GetMapping.WithIndex("my-index-000001"))
fmt.Println(res, err) const response = await client.indices.getMapping({
index: "my-index-000001",
});
console.log(response); GET /my-index-000001/_mapping
API возвращает следующий ответ:
{
"my-index-000001" : {
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"email" : {
"type" : "keyword"
},
"employee-id" : {
"type" : "keyword",
"index" : false
},
"name" : {
"type" : "text"
}
}
}
}
} Просмотр отображения определённых полей
Если вам нужно просмотреть отображение только одного или нескольких определённых полей, вы можете использовать API получения отображения поля.
Это полезно, если вам не нужно полное отображение индекса или ваш индекс содержит большое количество полей.
Следующий запрос получает отображение для поля employee-id.
resp = client.indices.get_field_mapping(
index="my-index-000001",
fields="employee-id",
)
print(resp) response = client.indices.get_field_mapping( index: 'my-index-000001', fields: 'employee-id' ) puts response
res, err := es.Indices.GetMapping(es.Indices.GetMapping.WithIndex("my-index-000001"))
fmt.Println(res, err) const response = await client.indices.getFieldMapping({
index: "my-index-000001",
fields: "employee-id",
});
console.log(response); GET /my-index-000001/_mapping/field/employee-id
API возвращает следующий ответ:
{
"my-index-000001" : {
"mappings" : {
"employee-id" : {
"full_name" : "employee-id",
"mapping" : {
"employee-id" : {
"type" : "keyword",
"index" : false
}
}
}
}
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/explicit-mapping.html