enabled
Elasticsearchは、与えられたすべてのフィールドをインデックスしようとしますが、時にはフィールドをインデックスせずに保存したい場合があります。たとえば、ElasticsearchをWebセッションストアとして使用していると想像してください。セッションIDと最終更新時刻をインデックスしたいかもしれませんが、セッションデータ自体をクエリしたり集計したりする必要はありません。
#### Python
``````python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"user_id": {
"type": "keyword"
},
"last_updated": {
"type": "date"
},
"session_data": {
"type": "object",
"enabled": False
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="session_1",
document={
"user_id": "kimchy",
"session_data": {
"arbitrary_object": {
"some_array": [
"foo",
"bar",
{
"baz": 2
}
]
}
},
"last_updated": "2015-12-06T18:20:22"
},
)
print(resp1)
resp2 = client.index(
index="my-index-000001",
id="session_2",
document={
"user_id": "jpountz",
"session_data": "none",
"last_updated": "2015-12-06T18:22:13"
},
)
print(resp2)
`
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
user_id: {
type: 'keyword'
},
last_updated: {
type: 'date'
},
session_data: {
type: 'object',
enabled: false
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 'session_1',
body: {
user_id: 'kimchy',
session_data: {
arbitrary_object: {
some_array: [
'foo',
'bar',
{
baz: 2
}
]
}
},
last_updated: '2015-12-06T18:20:22'
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 'session_2',
body: {
user_id: 'jpountz',
session_data: 'none',
last_updated: '2015-12-06T18:22:13'
}
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
user_id: {
type: "keyword",
},
last_updated: {
type: "date",
},
session_data: {
type: "object",
enabled: false,
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: "session_1",
document: {
user_id: "kimchy",
session_data: {
arbitrary_object: {
some_array: [
"foo",
"bar",
{
baz: 2,
},
],
},
},
last_updated: "2015-12-06T18:20:22",
},
});
console.log(response1);
const response2 = await client.index({
index: "my-index-000001",
id: "session_2",
document: {
user_id: "jpountz",
session_data: "none",
last_updated: "2015-12-06T18:22:13",
},
});
console.log(response2);
Console
PUT my-index-000001
{
"mappings": {
"properties": {
"user_id": {
"type": "keyword"
},
"last_updated": {
"type": "date"
},
"session_data": {
"type": "object",
"enabled": false
}
}
}
}
PUT my-index-000001/_doc/session_1
{
"user_id": "kimchy",
"session_data": {
"arbitrary_object": {
"some_array": [ "foo", "bar", { "baz": 2 } ]
}
},
"last_updated": "2015-12-06T18:20:22"
}
PUT my-index-000001/_doc/session_2
{
"user_id": "jpountz",
"session_data": "none",
"last_updated": "2015-12-06T18:22:13"
}
session_data フィールドは無効です。 |
|
任意のデータはsession_data フィールドに渡すことができますが、完全に無視されます。 |
|
session_data はJSONオブジェクトでない値も無視します。 |
マッピング全体も無効にすることができ、その場合、ドキュメントは_source
フィールドに保存され、取得可能ですが、その内容はどのようにもインデックスされません。
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"enabled": False
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="session_1",
document={
"user_id": "kimchy",
"session_data": {
"arbitrary_object": {
"some_array": [
"foo",
"bar",
{
"baz": 2
}
]
}
},
"last_updated": "2015-12-06T18:20:22"
},
)
print(resp1)
resp2 = client.get(
index="my-index-000001",
id="session_1",
)
print(resp2)
resp3 = client.indices.get_mapping(
index="my-index-000001",
)
print(resp3)
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
enabled: false
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 'session_1',
body: {
user_id: 'kimchy',
session_data: {
arbitrary_object: {
some_array: [
'foo',
'bar',
{
baz: 2
}
]
}
},
last_updated: '2015-12-06T18:20:22'
}
)
puts response
response = client.get(
index: 'my-index-000001',
id: 'session_1'
)
puts response
response = client.indices.get_mapping(
index: 'my-index-000001'
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
enabled: false,
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: "session_1",
document: {
user_id: "kimchy",
session_data: {
arbitrary_object: {
some_array: [
"foo",
"bar",
{
baz: 2,
},
],
},
},
last_updated: "2015-12-06T18:20:22",
},
});
console.log(response1);
const response2 = await client.get({
index: "my-index-000001",
id: "session_1",
});
console.log(response2);
const response3 = await client.indices.getMapping({
index: "my-index-000001",
});
console.log(response3);
Console
PUT my-index-000001
{
"mappings": {
"enabled": false
}
}
PUT my-index-000001/_doc/session_1
{
"user_id": "kimchy",
"session_data": {
"arbitrary_object": {
"some_array": [ "foo", "bar", { "baz": 2 } ]
}
},
"last_updated": "2015-12-06T18:20:22"
}
GET my-index-000001/_doc/session_1
GET my-index-000001/_mapping
マッピング全体が無効です。 | |
ドキュメントは取得可能です。 | |
マッピングを確認すると、フィールドが追加されていないことがわかります。 |
既存のフィールドと最上位のマッピング定義に対するenabled
設定は更新できません。
Elasticsearchがフィールドの内容の解析を完全にスキップするため、無効なフィールドに非オブジェクトデータを追加することが可能です。
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"session_data": {
"type": "object",
"enabled": False
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="session_1",
document={
"session_data": "foo bar"
},
)
print(resp1)
Ruby
response = client.indices.create(
index: 'my-index-000001',
body: {
mappings: {
properties: {
session_data: {
type: 'object',
enabled: false
}
}
}
}
)
puts response
response = client.index(
index: 'my-index-000001',
id: 'session_1',
body: {
session_data: 'foo bar'
}
)
puts response
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
session_data: {
type: "object",
enabled: false,
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: "session_1",
document: {
session_data: "foo bar",
},
});
console.log(response1);
Console
PUT my-index-000001
{
"mappings": {
"properties": {
"session_data": {
"type": "object",
"enabled": false
}
}
}
}
PUT my-index-000001/_doc/session_1
{
"session_data": "foo bar"
}
ドキュメントは正常に追加されましたが、session_data には非オブジェクトデータが含まれています。 |