store
По умолчанию значения полей индексируются для поиска, но не хранятся. Это означает, что поле можно использовать для запросов, но исходное значение поля получить нельзя.
Обычно это не имеет значения. Значение поля уже является частью _source поля, которое хранится по умолчанию. Если вы хотите получить значение только одного поля или нескольких полей, а не всего _source, это можно сделать с помощью фильтрации _source.
В некоторых ситуациях имеет смысл store поле. Например, если у вас есть документ с title, date и очень большим content полем, вы можете захотеть получить только title и date, не извлекая их из большого _source поля:
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"title": {
"type": "text",
"store": True
},
"date": {
"type": "date",
"store": True
},
"content": {
"type": "text"
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="1",
document={
"title": "Some short title",
"date": "2015-01-01",
"content": "A very long content field..."
},
)
print(resp1)
resp2 = client.search(
index="my-index-000001",
stored_fields=[
"title",
"date"
],
)
print(resp2) response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
title: {
type: 'text',
store: true
},
date: {
type: 'date',
store: true
},
content: {
type: 'text'
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 1,
body: {
title: 'Some short title',
date: '2015-01-01',
content: 'A very long content field...'
}
)
puts response
response = client.search(
index: 'my-index-000001',
body: {
stored_fields: [
'title',
'date'
]
}
)
puts response const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
title: {
type: "text",
store: true,
},
date: {
type: "date",
store: true,
},
content: {
type: "text",
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 1,
document: {
title: "Some short title",
date: "2015-01-01",
content: "A very long content field...",
},
});
console.log(response1);
const response2 = await client.search({
index: "my-index-000001",
stored_fields: ["title", "date"],
});
console.log(response2); PUT my-index-000001
{
"mappings": {
"properties": {
"title": {
"type": "text",
"store": true
},
"date": {
"type": "date",
"store": true
},
"content": {
"type": "text"
}
}
}
}
PUT my-index-000001/_doc/1
{
"title": "Some short title",
"date": "2015-01-01",
"content": "A very long content field..."
}
GET my-index-000001/_search
{
"stored_fields": [ "title", "date" ]
} | Поля | |
| Этот запрос вернёт значения полей |
Хранящиеся поля возвращаются как массивы
Для согласованности, хранящиеся поля всегда возвращаются в виде массива, так как нет способа узнать, было ли исходное значение поля одиночным значением, несколькими значениями или пустым массивом.
Если вам нужно исходное значение, получите его из _source поля вместо этого.
© 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/mapping-store.html