親のIDクエリ

特定の親ドキュメントに対する子ドキュメントを返します joined。同じインデックス内のドキュメント間で親子関係を作成するために、join フィールドマッピングを使用できます。

リクエストの例

インデックス設定

parent_id クエリを使用するには、インデックスに join フィールドマッピングが含まれている必要があります。parent_id クエリのためにインデックスを設定する方法を確認するには、次の例を試してください。

  • 1. join フィールドマッピングを持つインデックスを作成します。

Python

  1. resp = client.indices.create(
  2. index="my-index-000001",
  3. mappings={
  4. "properties": {
  5. "my-join-field": {
  6. "type": "join",
  7. "relations": {
  8. "my-parent": "my-child"
  9. }
  10. }
  11. }
  12. },
  13. )
  14. print(resp)

Ruby

  1. response = client.indices.create(
  2. index: 'my-index-000001',
  3. body: {
  4. mappings: {
  5. properties: {
  6. "my-join-field": {
  7. type: 'join',
  8. relations: {
  9. "my-parent": 'my-child'
  10. }
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response

Js

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

コンソール

  1. PUT /my-index-000001
  2. {
  3. "mappings": {
  4. "properties": {
  5. "my-join-field": {
  6. "type": "join",
  7. "relations": {
  8. "my-parent": "my-child"
  9. }
  10. }
  11. }
  12. }
  13. }
  • 2. IDが 1 の親ドキュメントをインデックスします。

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. id="1",
  4. refresh=True,
  5. document={
  6. "text": "This is a parent document.",
  7. "my-join-field": "my-parent"
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.index(
  2. index: 'my-index-000001',
  3. id: 1,
  4. refresh: true,
  5. body: {
  6. text: 'This is a parent document.',
  7. "my-join-field": 'my-parent'
  8. }
  9. )
  10. puts response

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. id: 1,
  4. refresh: "true",
  5. document: {
  6. text: "This is a parent document.",
  7. "my-join-field": "my-parent",
  8. },
  9. });
  10. console.log(response);

コンソール

  1. PUT /my-index-000001/_doc/1?refresh
  2. {
  3. "text": "This is a parent document.",
  4. "my-join-field": "my-parent"
  5. }
  • 3. 親ドキュメントの子ドキュメントをインデックスします。

Python

  1. resp = client.index(
  2. index="my-index-000001",
  3. id="2",
  4. routing="1",
  5. refresh=True,
  6. document={
  7. "text": "This is a child document.",
  8. "my-join-field": {
  9. "name": "my-child",
  10. "parent": "1"
  11. }
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.index({
  2. index: "my-index-000001",
  3. id: 2,
  4. routing: 1,
  5. refresh: "true",
  6. document: {
  7. text: "This is a child document.",
  8. "my-join-field": {
  9. name: "my-child",
  10. parent: "1",
  11. },
  12. },
  13. });
  14. console.log(response);

コンソール

  1. PUT /my-index-000001/_doc/2?routing=1&refresh
  2. {
  3. "text": "This is a child document.",
  4. "my-join-field": {
  5. "name": "my-child",
  6. "parent": "1"
  7. }
  8. }

クエリの例

次の検索は、IDが 1 の親ドキュメントの子ドキュメントを返します。

Python

  1. resp = client.search(
  2. index="my-index-000001",
  3. query={
  4. "parent_id": {
  5. "type": "my-child",
  6. "id": "1"
  7. }
  8. },
  9. )
  10. print(resp)

Js

  1. const response = await client.search({
  2. index: "my-index-000001",
  3. query: {
  4. parent_id: {
  5. type: "my-child",
  6. id: "1",
  7. },
  8. },
  9. });
  10. console.log(response);

コンソール

  1. GET /my-index-000001/_search
  2. {
  3. "query": {
  4. "parent_id": {
  5. "type": "my-child",
  6. "id": "1"
  7. }
  8. }
  9. }

parent_idのトップレベルパラメータ

  • type
  • (必須、文字列) join フィールドにマッピングされた子関係の名前。
  • id
  • (必須、文字列) 親ドキュメントのID。このクエリは、この親ドキュメントの子ドキュメントを返します。
  • ignore_unmapped
  • (オプション、Boolean) マッピングされていない type を無視し、エラーの代わりにドキュメントを返さないかどうかを示します。デフォルトは false です。
    false の場合、Elasticsearchは type がマッピングされていない場合にエラーを返します。
    このパラメータを使用して、type を含まない可能性のある複数のインデックスをクエリできます。