フィールドマッピングAPIの取得
mapping definitionsを1つ以上のフィールドのために取得します。データストリームの場合、APIはストリームのバックインデックスのフィールドマッピングを取得します。
このAPIは、complete mappingが必要ない場合や、インデックスマッピングに多数のフィールドが含まれている場合に便利です。
Python
resp = client.indices.get_field_mapping(
index="my-index-000001",
fields="user",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: 'my-index-000001',
fields: 'user'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "my-index-000001",
fields: "user",
});
console.log(response);
コンソール
GET /my-index-000001/_mapping/field/user
リクエスト
GET /_mapping/field/<field>
GET /<target>/_mapping/field/<field>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対して
view_index_metadata
またはmanage
index privilegeを持っている必要があります。
パスパラメータ
<target>
- (オプション、文字列) リクエストを制限するために使用されるデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(
*
)をサポートします。すべてのデータストリームとインデックスをターゲットにするには、このパラメータを省略するか、*
または_all
を使用します。 <field>
- (オプション、文字列) 返される情報を制限するために使用されるフィールドのカンマ区切りリストまたはワイルドカード式。
クエリパラメータ
allow_no_indices
- (オプション、ブール値)
false
の場合、リクエストは、ワイルドカード式、index alias、または_all
の値が欠落または閉じたインデックスのみをターゲットにする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*
をターゲットにするリクエストは、インデックスがfoo
で始まるがbar
で始まるインデックスがない場合にエラーを返します。
デフォルトはtrue
です。 expand_wildcards
- (オプション、文字列) ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値をサポートします。たとえば
open,hidden
。有効な値は次のとおりです:all
- すべてのデータストリームまたはインデックスに一致します。隠れたもの(hidden)も含まれます。
open
- オープンで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
closed
- 閉じた非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームは閉じることができません。
hidden
- 隠れたデータストリームと隠れたインデックスに一致します。
open
、closed
、またはその両方と組み合わせる必要があります。 none
- ワイルドカードパターンは受け入れられません。
ignore_unavailable
- (オプション、ブール値)
false
の場合、リクエストは欠落または閉じたインデックスをターゲットにする場合にエラーを返します。デフォルトはfalse
です。 include_defaults
- (オプション、ブール値)
true
の場合、レスポンスにはデフォルトのマッピング値が含まれます。デフォルトはfalse
です。
例
インデックス設定の例
新しいインデックスを作成する際にフィールドマッピングを提供できます。次のcreate index APIリクエストは、いくつかのフィールドマッピングを持つpublications
インデックスを作成します。
Python
resp = client.indices.create(
index="publications",
mappings={
"properties": {
"id": {
"type": "text"
},
"title": {
"type": "text"
},
"abstract": {
"type": "text"
},
"author": {
"properties": {
"id": {
"type": "text"
},
"name": {
"type": "text"
}
}
}
}
},
)
print(resp)
Ruby
response = client.indices.create(
index: 'publications',
body: {
mappings: {
properties: {
id: {
type: 'text'
},
title: {
type: 'text'
},
abstract: {
type: 'text'
},
author: {
properties: {
id: {
type: 'text'
},
name: {
type: 'text'
}
}
}
}
}
}
)
puts response
Js
const response = await client.indices.create({
index: "publications",
mappings: {
properties: {
id: {
type: "text",
},
title: {
type: "text",
},
abstract: {
type: "text",
},
author: {
properties: {
id: {
type: "text",
},
name: {
type: "text",
},
},
},
},
},
});
console.log(response);
コンソール
PUT /publications
{
"mappings": {
"properties": {
"id": { "type": "text" },
"title": { "type": "text" },
"abstract": { "type": "text" },
"author": {
"properties": {
"id": { "type": "text" },
"name": { "type": "text" }
}
}
}
}
}
次のコマンドはフィールドtitle
のマッピングのみを返します:
Python
resp = client.indices.get_field_mapping(
index="publications",
fields="title",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: 'publications',
fields: 'title'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "publications",
fields: "title",
});
console.log(response);
コンソール
GET publications/_mapping/field/title
コンソール-結果
{
"publications": {
"mappings": {
"title": {
"full_name": "title",
"mapping": {
"title": {
"type": "text"
}
}
}
}
}
}
フィールドの指定
get mapping APIを使用すると、カンマ区切りのフィールドリストを指定できます。
たとえば、author
フィールドのid
を選択するには、その完全な名前author.id
を使用する必要があります。
Python
resp = client.indices.get_field_mapping(
index="publications",
fields="author.id,abstract,name",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: 'publications',
fields: 'author.id,abstract,name'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "publications",
fields: "author.id,abstract,name",
});
console.log(response);
コンソール
GET publications/_mapping/field/author.id,abstract,name
コンソール-結果
{
"publications": {
"mappings": {
"author.id": {
"full_name": "author.id",
"mapping": {
"id": {
"type": "text"
}
}
},
"abstract": {
"full_name": "abstract",
"mapping": {
"abstract": {
"type": "text"
}
}
}
}
}
}
get field mapping APIはワイルドカード表記もサポートしています。
Python
resp = client.indices.get_field_mapping(
index="publications",
fields="a*",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: 'publications',
fields: 'a*'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "publications",
fields: "a*",
});
console.log(response);
コンソール
GET publications/_mapping/field/a*
コンソール-結果
{
"publications": {
"mappings": {
"author.name": {
"full_name": "author.name",
"mapping": {
"name": {
"type": "text"
}
}
},
"abstract": {
"full_name": "abstract",
"mapping": {
"abstract": {
"type": "text"
}
}
},
"author.id": {
"full_name": "author.id",
"mapping": {
"id": {
"type": "text"
}
}
}
}
}
}
複数のターゲットとフィールド
get field mapping APIは、単一のリクエストで複数のデータストリームまたはインデックスから複数のフィールドのマッピングを取得するために使用できます。
`````<target>`````パラメータを省略するか、`````*`````または`````_all`````の値を使用して、クラスター内のすべてのデータストリームとインデックスをターゲットにできます。
同様に、`````<field>`````パラメータを省略するか、`````*`````の値を使用して、ターゲットデータストリームまたはインデックス内のすべてのフィールドのマッピングを取得できます。ただし、`````<field>`````パラメータは`````_all`````の値をサポートしていません。
たとえば、次のリクエストは、`````my-index-000001`````または`````my-index-000002`````という名前の任意のデータストリームまたはインデックス内の`````message`````フィールドのマッピングを取得します。
#### Python
``````python
resp = client.indices.get_field_mapping(
index="my-index-000001,my-index-000002",
fields="message",
)
print(resp)
`
Ruby
response = client.indices.get_field_mapping(
index: 'my-index-000001,my-index-000002',
fields: 'message'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "my-index-000001,my-index-000002",
fields: "message",
});
console.log(response);
コンソール
GET /my-index-000001,my-index-000002/_mapping/field/message
次のリクエストは、クラスター内の任意のデータストリームまたはインデックス内のmessage
およびuser.id
フィールドのマッピングを取得します。
Python
resp = client.indices.get_field_mapping(
index="_all",
fields="message",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: '_all',
fields: 'message'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "_all",
fields: "message",
});
console.log(response);
コンソール
GET /_all/_mapping/field/message
次のリクエストは、クラスター内の任意のデータストリームまたはインデックス内のid
プロパティを持つフィールドのマッピングを取得します。
Python
resp = client.indices.get_field_mapping(
index="_all",
fields="*.id",
)
print(resp)
Ruby
response = client.indices.get_field_mapping(
index: '_all',
fields: '*.id'
)
puts response
Js
const response = await client.indices.getFieldMapping({
index: "_all",
fields: "*.id",
});
console.log(response);
コンソール
GET /_all/_mapping/field/*.id