マッピングAPIの更新

既存のデータストリームまたはインデックスに新しいフィールドを追加します。このAPIを使用して、既存のフィールドの検索設定を変更することもできます。

データストリームの場合、これらの変更はデフォルトですべてのバックインデックスに適用されます。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "email": {
  5. "type": "keyword"
  6. }
  7. },
  8. )
  9. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. email: {
  6. type: 'keyword'
  7. }
  8. }
  9. }
  10. )
  11. puts response

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. email: {
  5. type: "keyword",
  6. },
  7. },
  8. });
  9. console.log(response);

Console

  1. PUT /my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "email": {
  5. "type": "keyword"
  6. }
  7. }
  8. }

Request

PUT /<target>/_mapping

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対してmanage インデックス権限を持っている必要があります。
    [7.9] 7.9で非推奨。リクエストがインデックスまたはインデックスエイリアスを対象とする場合、createcreate_docindex、またはwriteインデックス権限を使用してそのマッピングを更新することもできます。

パスパラメータ

  • <target>
  • (必須、文字列) リクエストを制限するために使用されるデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(*)をサポートします。すべてのデータストリームとインデックスを対象とするには、このパラメータを省略するか、*または_allを使用します。

クエリパラメータ

  • allow_no_indices
  • (オプション、ブール値) falseの場合、リクエストは、ワイルドカード式、インデックスエイリアス、または_allの値が欠落または閉じたインデックスのみを対象とする場合にエラーを返します。この動作は、リクエストが他のオープンインデックスを対象とする場合でも適用されます。たとえば、foo*,bar*を対象とするリクエストは、インデックスがfooで始まるがbarで始まるインデックスがない場合にエラーを返します。
    デフォルトはfalseです。
  • expand_wildcards
  • (オプション、文字列) ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームを対象とできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値(open,hiddenなど)をサポートします。有効な値は次のとおりです:
    • all
    • すべてのデータストリームまたはインデックスに一致し、隠れたものも含まれます。
    • open
    • オープンで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
    • closed
    • クローズドで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームはクローズできません。
    • hidden
    • 隠れたデータストリームと隠れたインデックスに一致します。openclosed、またはその両方と組み合わせる必要があります。
    • none
    • ワイルドカードパターンは受け付けられません。
      デフォルトはopenです。
  • ignore_unavailable
  • (オプション、ブール値) falseの場合、リクエストは欠落またはクローズドインデックスを対象とする場合にエラーを返します。デフォルトはfalseです。
  • master_timeout
  • (オプション、時間単位) マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • timeout
  • (オプション、時間単位) クラスタメタデータを更新した後、クラスタ内のすべての関連ノードからの応答を待機する期間。タイムアウトが切れる前に応答が受信されない場合、クラスタメタデータの更新は適用されますが、応答は完全に承認されなかったことを示します。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • write_index_only
  • (オプション、ブール値) trueの場合、マッピングはターゲットの現在の書き込みインデックスにのみ適用されます。デフォルトはfalseです。

リクエストボディ

単一ターゲットの例

マッピングAPIの更新には、既存のデータストリームまたはインデックスが必要です。次のインデックス作成 APIリクエストは、publicationsインデックスをマッピングなしで作成します。

Php

  1. $params = [
  2. 'index' => 'publications',
  3. ];
  4. $response = $client->indices()->create($params);

Python

  1. resp = client.indices.create(
  2. index="publications",
  3. )
  4. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'publications'
  3. )
  4. puts response

Go

  1. res, err := es.Indices.Create("publications")
  2. fmt.Println(res, err)

Js

  1. const response = await client.indices.create({
  2. index: "publications",
  3. });
  4. console.log(response);

Console

  1. PUT /publications

次のマッピングAPIの更新リクエストは、title、新しいtextフィールドをpublicationsインデックスに追加します。

Php

  1. $params = [
  2. 'index' => 'publications',
  3. 'body' => [
  4. 'properties' => [
  5. 'title' => [
  6. 'type' => 'text',
  7. ],
  8. ],
  9. ],
  10. ];
  11. $response = $client->indices()->putMapping($params);

Python

  1. resp = client.indices.put_mapping(
  2. index="publications",
  3. properties={
  4. "title": {
  5. "type": "text"
  6. }
  7. },
  8. )
  9. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'publications',
  3. body: {
  4. properties: {
  5. title: {
  6. type: 'text'
  7. }
  8. }
  9. }
  10. )
  11. puts response

Go

  1. res, err := es.Indices.PutMapping(
  2. []string{"publications"},
  3. strings.NewReader(`{
  4. "properties": {
  5. "title": {
  6. "type": "text"
  7. }
  8. }
  9. }`),
  10. )
  11. fmt.Println(res, err)

Js

  1. const response = await client.indices.putMapping({
  2. index: "publications",
  3. properties: {
  4. title: {
  5. type: "text",
  6. },
  7. },
  8. });
  9. console.log(response);

Console

  1. PUT /publications/_mapping
  2. {
  3. "properties": {
  4. "title": { "type": "text"}
  5. }
  6. }

複数ターゲット

マッピングAPIは、単一のリクエストで複数のデータストリームまたはインデックスに適用できます。たとえば、my-index-000001およびmy-index-000002インデックスのマッピングを同時に更新できます:

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. )
  4. print(resp)
  5. resp1 = client.indices.create(
  6. index="my-index-000002",
  7. )
  8. print(resp1)
  9. resp2 = client.indices.put_mapping(
  10. index="my-index-000001,my-index-000002",
  11. properties={
  12. "user": {
  13. "properties": {
  14. "name": {
  15. "type": "keyword"
  16. }
  17. }
  18. }
  19. },
  20. )
  21. print(resp2)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001'
  3. )
  4. puts response
  5. response = client.indices.create(
  6. index: 'my-index-000002'
  7. )
  8. puts response
  9. response = client.indices.put_mapping(
  10. index: 'my-index-000001,my-index-000002',
  11. body: {
  12. properties: {
  13. user: {
  14. properties: {
  15. name: {
  16. type: 'keyword'
  17. }
  18. }
  19. }
  20. }
  21. }
  22. )
  23. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. });
  4. console.log(response);
  5. const response1 = await client.indices.create({
  6. index: "my-index-000002",
  7. });
  8. console.log(response1);
  9. const response2 = await client.indices.putMapping({
  10. index: "my-index-000001,my-index-000002",
  11. properties: {
  12. user: {
  13. properties: {
  14. name: {
  15. type: "keyword",
  16. },
  17. },
  18. },
  19. },
  20. });
  21. console.log(response2);

Console

  1. # 2つのインデックスを作成
  2. PUT /my-index-000001
  3. PUT /my-index-000002
  4. # 両方のマッピングを更新
  5. PUT /my-index-000001,my-index-000002/_mapping
  6. {
  7. "properties": {
  8. "user": {
  9. "properties": {
  10. "name": {
  11. "type": "keyword"
  12. }
  13. }
  14. }
  15. }
  16. }

既存のオブジェクトフィールドに新しいプロパティを追加

更新マッピングAPIを使用して、既存のobjectフィールドに新しいプロパティを追加できます。これがどのように機能するかを確認するには、次の例を試してください。

nameオブジェクトフィールドと内部[first]テキストフィールドを持つインデックスを作成するために、インデックス作成 APIを使用します。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "name": {
  6. "properties": {
  7. "first": {
  8. "type": "text"
  9. }
  10. }
  11. }
  12. }
  13. },
  14. )
  15. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. name: {
  7. properties: {
  8. first: {
  9. type: 'text'
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }
  16. )
  17. puts response

Go

  1. res, err := es.Indices.Create(
  2. "my-index-000001",
  3. es.Indices.Create.WithBody(strings.NewReader(`{
  4. "mappings": {
  5. "properties": {
  6. "name": {
  7. "properties": {
  8. "first": {
  9. "type": "text"
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }`)),
  16. )
  17. fmt.Println(res, err)

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. name: {
  6. properties: {
  7. first: {
  8. type: "text",
  9. },
  10. },
  11. },
  12. },
  13. },
  14. });
  15. console.log(response);

Console

  1. PUT /my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "name": {
  6. "properties": {
  7. "first": {
  8. "type": "text"
  9. }
  10. }
  11. }
  12. }
  13. }
  14. }

更新マッピングAPIを使用して、nameフィールドに新しい内部lastテキストフィールドを追加します。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "name": {
  5. "properties": {
  6. "last": {
  7. "type": "text"
  8. }
  9. }
  10. }
  11. },
  12. )
  13. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. name: {
  6. properties: {
  7. last: {
  8. type: 'text'
  9. }
  10. }
  11. }
  12. }
  13. }
  14. )
  15. puts response

Go

  1. res, err := es.Indices.PutMapping(
  2. []string{"my-index-000001"},
  3. strings.NewReader(`{
  4. "properties": {
  5. "name": {
  6. "properties": {
  7. "last": {
  8. "type": "text"
  9. }
  10. }
  11. }
  12. }
  13. }`),
  14. )
  15. fmt.Println(res, err)

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. name: {
  5. properties: {
  6. last: {
  7. type: "text",
  8. },
  9. },
  10. },
  11. },
  12. });
  13. console.log(response);

Console

  1. PUT /my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "name": {
  5. "properties": {
  6. "last": {
  7. "type": "text"
  8. }
  9. }
  10. }
  11. }
  12. }

既存のフィールドにマルチフィールドを追加

マルチフィールドを使用すると、同じフィールドを異なる方法でインデックスできます。更新マッピングAPIを使用して、fieldsマッピングパラメータを更新し、既存のフィールドにマルチフィールドを有効にできます。

インデックス(またはデータストリーム)にドキュメントが含まれている場合、マルチフィールドを追加しても、それらのドキュメントには新しいマルチフィールドの値がありません。新しいマルチフィールドをクエリによる更新APIで埋めることができます。

これがどのように機能するかを確認するには、次の例を試してください。

city テキストフィールドを持つインデックスを作成するために、インデックス作成 APIを使用します。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "city": {
  6. "type": "text"
  7. }
  8. }
  9. },
  10. )
  11. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. city: {
  7. type: 'text'
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response

Go

  1. res, err := es.Indices.Create(
  2. "my-index-000001",
  3. es.Indices.Create.WithBody(strings.NewReader(`{
  4. "mappings": {
  5. "properties": {
  6. "city": {
  7. "type": "text"
  8. }
  9. }
  10. }
  11. }`)),
  12. )
  13. fmt.Println(res, err)

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. city: {
  6. type: "text",
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);

Console

  1. PUT /my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "city": {
  6. "type": "text"
  7. }
  8. }
  9. }
  10. }

テキストフィールドはフルテキスト検索に適していますが、キーワードフィールドは分析されず、ソートや集計に適している場合があります。

更新マッピングAPIを使用して、cityフィールドにマルチフィールドを有効にします。このリクエストは、ソートに使用できるcity.rawキーワードマルチフィールドを追加します。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "city": {
  5. "type": "text",
  6. "fields": {
  7. "raw": {
  8. "type": "keyword"
  9. }
  10. }
  11. }
  12. },
  13. )
  14. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. city: {
  6. type: 'text',
  7. fields: {
  8. raw: {
  9. type: 'keyword'
  10. }
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response

Go

  1. res, err := es.Indices.PutMapping(
  2. []string{"my-index-000001"},
  3. strings.NewReader(`{
  4. "properties": {
  5. "city": {
  6. "type": "text",
  7. "fields": {
  8. "raw": {
  9. "type": "keyword"
  10. }
  11. }
  12. }
  13. }
  14. }`),
  15. )
  16. fmt.Println(res, err)

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. city: {
  5. type: "text",
  6. fields: {
  7. raw: {
  8. type: "keyword",
  9. },
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. PUT /my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "city": {
  5. "type": "text",
  6. "fields": {
  7. "raw": {
  8. "type": "keyword"
  9. }
  10. }
  11. }
  12. }
  13. }

既存のフィールドのサポートされているマッピングパラメータを変更

ignore_aboveパラメータのドキュメントには、更新マッピングAPIを使用して既存のフィールドに対して更新できるかどうかが示されています。たとえば、更新マッピングAPIを使用してignore_aboveパラメータを更新できます。

これがどのように機能するかを確認するには、次の例を試してください。

user_idキーワードフィールドを含むインデックスを作成するために、インデックス作成 APIを使用します。user_idフィールドはignore_aboveパラメータ値が20です。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "user_id": {
  6. "type": "keyword",
  7. "ignore_above": 20
  8. }
  9. }
  10. },
  11. )
  12. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. user_id: {
  7. type: 'keyword',
  8. ignore_above: 20
  9. }
  10. }
  11. }
  12. }
  13. )
  14. puts response

Go

  1. res, err := es.Indices.Create(
  2. "my-index-000001",
  3. es.Indices.Create.WithBody(strings.NewReader(`{
  4. "mappings": {
  5. "properties": {
  6. "user_id": {
  7. "type": "keyword",
  8. "ignore_above": 20
  9. }
  10. }
  11. }
  12. }`)),
  13. )
  14. fmt.Println(res, err)

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. user_id: {
  6. type: "keyword",
  7. ignore_above: 20,
  8. },
  9. },
  10. },
  11. });
  12. console.log(response);

Console

  1. PUT /my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "user_id": {
  6. "type": "keyword",
  7. "ignore_above": 20
  8. }
  9. }
  10. }
  11. }

更新マッピングAPIを使用して、ignore_aboveパラメータ値を100に変更します。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "user_id": {
  5. "type": "keyword",
  6. "ignore_above": 100
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. user_id: {
  6. type: 'keyword',
  7. ignore_above: 100
  8. }
  9. }
  10. }
  11. )
  12. puts response

Go

  1. res, err := es.Indices.PutMapping(
  2. []string{"my-index-000001"},
  3. strings.NewReader(`{
  4. "properties": {
  5. "user_id": {
  6. "type": "keyword",
  7. "ignore_above": 100
  8. }
  9. }
  10. }`),
  11. )
  12. fmt.Println(res, err)

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. user_id: {
  5. type: "keyword",
  6. ignore_above: 100,
  7. },
  8. },
  9. });
  10. console.log(response);

Console

  1. PUT /my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "user_id": {
  5. "type": "keyword",
  6. "ignore_above": 100
  7. }
  8. }
  9. }

既存のフィールドのマッピングを変更

サポートされているuser_idを除いて、既存のフィールドのマッピングやフィールドタイプを変更することはできません。既存のフィールドを変更すると、すでにインデックスされたデータが無効になる可能性があります。

データストリームのバックインデックスのフィールドのマッピングを変更する必要がある場合は、データストリームのマッピングと設定を変更するを参照してください。

他のインデックスのフィールドのマッピングを変更する必要がある場合は、正しいマッピングを持つ新しいインデックスを作成し、そのインデックスにデータを再インデックスします。

インデックス内の既存のフィールドのマッピングを変更する方法を確認するには、次の例を試してください。

[user_id]フィールドを持つインデックスを作成するために、インデックス作成 APIを使用します。longフィールドタイプを持っています。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "user_id": {
  6. "type": "long"
  7. }
  8. }
  9. },
  10. )
  11. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. user_id: {
  7. type: 'long'
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. user_id: {
  6. type: "long",
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);

Console

  1. PUT /my-index-000001
  2. {
  3. "mappings" : {
  4. "properties": {
  5. "user_id": {
  6. "type": "long"
  7. }
  8. }
  9. }
  10. }

[user_id]フィールド値を持ついくつかのドキュメントをインデックスするために、インデックス APIを使用します。

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. refresh="wait_for",
  4. document={
  5. "user_id": 12345
  6. },
  7. )
  8. print(resp)
  9. resp1 = client.index(
  10. index="my-index-000001",
  11. refresh="wait_for",
  12. document={
  13. "user_id": 12346
  14. },
  15. )
  16. print(resp1)

Ruby

  1. response = client.index(
  2. index: 'my-index-000001',
  3. refresh: 'wait_for',
  4. body: {
  5. user_id: 12_345
  6. }
  7. )
  8. puts response
  9. response = client.index(
  10. index: 'my-index-000001',
  11. refresh: 'wait_for',
  12. body: {
  13. user_id: 12_346
  14. }
  15. )
  16. puts response

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. refresh: "wait_for",
  4. document: {
  5. user_id: 12345,
  6. },
  7. });
  8. console.log(response);
  9. const response1 = await client.index({
  10. index: "my-index-000001",
  11. refresh: "wait_for",
  12. document: {
  13. user_id: 12346,
  14. },
  15. });
  16. console.log(response1);

Console

  1. POST /my-index-000001/_doc?refresh=wait_for
  2. {
  3. "user_id" : 12345
  4. }
  5. POST /my-index-000001/_doc?refresh=wait_for
  6. {
  7. "user_id" : 12346
  8. }

[user_id]フィールドをkeywordフィールドタイプに変更するには、正しいマッピングを持つ新しいインデックスを作成するために、インデックス作成APIを使用します。

Python

  1. resp = client.indices.create(
  2. index="my-new-index-000001",
  3. mappings={
  4. "properties": {
  5. "user_id": {
  6. "type": "keyword"
  7. }
  8. }
  9. },
  10. )
  11. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-new-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. user_id: {
  7. type: 'keyword'
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response

Js

  1. const response = await client.indices.create({
  2. index: "my-new-index-000001",
  3. mappings: {
  4. properties: {
  5. user_id: {
  6. type: "keyword",
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);

Console

  1. PUT /my-new-index-000001
  2. {
  3. "mappings" : {
  4. "properties": {
  5. "user_id": {
  6. "type": "keyword"
  7. }
  8. }
  9. }
  10. }

再インデックス APIを使用して、古いインデックスから新しいインデックスにドキュメントをコピーします。

Python

  1. resp = client.reindex(
  2. source={
  3. "index": "my-index-000001"
  4. },
  5. dest={
  6. "index": "my-new-index-000001"
  7. },
  8. )
  9. print(resp)

Ruby

  1. response = client.reindex(
  2. body: {
  3. source: {
  4. index: 'my-index-000001'
  5. },
  6. dest: {
  7. index: 'my-new-index-000001'
  8. }
  9. }
  10. )
  11. puts response

Js

  1. const response = await client.reindex({
  2. source: {
  3. index: "my-index-000001",
  4. },
  5. dest: {
  6. index: "my-new-index-000001",
  7. },
  8. });
  9. console.log(response);

Console

  1. POST /_reindex
  2. {
  3. "source": {
  4. "index": "my-index-000001"
  5. },
  6. "dest": {
  7. "index": "my-new-index-000001"
  8. }
  9. }

フィールドの名前を変更

フィールドの名前を変更すると、古いフィールド名の下で既にインデックスされたデータが無効になります。代わりに、aliasフィールドを追加して、代替フィールド名を作成します。

たとえば、[user_identifier]フィールドを持つインデックスを作成するために、インデックス作成 APIを使用します。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "user_identifier": {
  6. "type": "keyword"
  7. }
  8. }
  9. },
  10. )
  11. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. user_identifier: {
  7. type: 'keyword'
  8. }
  9. }
  10. }
  11. }
  12. )
  13. puts response

Go

  1. res, err := es.Indices.Create(
  2. "my-index-000001",
  3. es.Indices.Create.WithBody(strings.NewReader(`{
  4. "mappings": {
  5. "properties": {
  6. "user_identifier": {
  7. "type": "keyword"
  8. }
  9. }
  10. }
  11. }`)),
  12. )
  13. fmt.Println(res, err)

Js

  1. const response = await client.indices.create({
  2. index: "my-index-000001",
  3. mappings: {
  4. properties: {
  5. user_identifier: {
  6. type: "keyword",
  7. },
  8. },
  9. },
  10. });
  11. console.log(response);

Console

  1. PUT /my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "user_identifier": {
  6. "type": "keyword"
  7. }
  8. }
  9. }
  10. }

更新マッピングAPIを使用して、既存のuser_identifierフィールドのuser_idフィールドエイリアスを追加します。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "user_id": {
  5. "type": "alias",
  6. "path": "user_identifier"
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. user_id: {
  6. type: 'alias',
  7. path: 'user_identifier'
  8. }
  9. }
  10. }
  11. )
  12. puts response

Go

  1. res, err := es.Indices.PutMapping(
  2. []string{"my-index-000001"},
  3. strings.NewReader(`{
  4. "properties": {
  5. "user_id": {
  6. "type": "alias",
  7. "path": "user_identifier"
  8. }
  9. }
  10. }`),
  11. )
  12. fmt.Println(res, err)

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. user_id: {
  5. type: "alias",
  6. path: "user_identifier",
  7. },
  8. },
  9. });
  10. console.log(response);

Console

  1. PUT /my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "user_id": {
  5. "type": "alias",
  6. "path": "user_identifier"
  7. }
  8. }
  9. }