store
デフォルトでは、フィールド値はインデックス化されて検索可能になりますが、保存されません。これは、フィールドをクエリできることを意味しますが、元のフィールド値を取得することはできません。
通常、これは問題になりません。フィールド値はすでに_source
フィールドの一部であり、デフォルトで保存されています。全体の_source
の代わりに、単一のフィールドまたはいくつかのフィールドの値だけを取得したい場合は、ソースフィルタリングを使用してこれを実現できます。
特定の状況では、フィールドをstore
することが意味を持つ場合があります。たとえば、title
、date
、非常に大きなcontent
フィールドを持つドキュメントがある場合、title
とdate
だけを取得したい場合があります。大きな_source
フィールドからこれらのフィールドを抽出する必要はありません:
Python
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)
Ruby
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
Js
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);
Console
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" ]
}
title およびdate フィールドは保存されています。 |
|
このリクエストはtitle およびdate フィールドの値を取得します。 |
Stored fields returned as arrays
一貫性のために、保存されたフィールドは常に配列として返されます。元のフィールド値が単一の値、複数の値、または空の配列であったかどうかを知る方法がないためです。
元の値が必要な場合は、_source
フィールドから取得する必要があります。