OpenSearch に登録したドキュメントの検索

OpenSearch に登録したドキュメントの検索クエリについて見ていきます。

OpenSearch を利用したことがない方や、構築して実際に動かして見たい方は、OpenSearch で全文検索:OpenSearch 構築、基本操作をご覧ください。

目次

テストデータ登録

documents インデックスを作成する。

PUT /documents

テストドキュメントを登録する。テキストは ChatGPT さんに用意してもらいました。

POST /documents/_bulk
{"index":{"_index":"documents","_id":"1"}}
{"title":"サイバーセキュリティとプライバシー保護","content":"サイバーセキュリティとプライバシー保護は、現代社会においてますます重要な問題となっています。インターネットの普及により、個人や企業のデータがオンライン上で共有される機会が増え、それに伴う脅威も増加しています。個人情報の漏洩や機密データの盗難は、経済的な損失だけでなく、個人や組織の信頼をも損なう可能性があります。そのため、適切なセキュリティ対策とプライバシー保護が求められています。","created_by":"user-1"}
{"index":{"_index":"documents","_id":"2"}}
{"title":"テクノロジーと教育の融合","content":"現代の教育では、テクノロジーがますます重要な役割を果たしています。インタラクティブな学習アプリケーションやオンライン教材を活用することで、生徒たちはより効果的に学び、自分のペースで進歩することができます。また、教師はデータ分析ツールを使用して生徒の進歩を追跡し、個々のニーズに合った指導を提供することができます。テクノロジーと教育の融合は、教育の質とアクセス性を向上させるための重要な手段です。","created_by":"user-1"}
{"index":{"_index":"documents","_id":"3"}}
{"title":"リモートワークの未来","content":"リモートワークは、近年急速に普及しています。技術の進歩により、従業員は自宅やカフェからでも仕事を行うことが可能になりました。これにより、通勤時間の削減や地理的な制約の克服が可能になり、生産性の向上が期待されています。しかし、リモートワークにはコミュニケーションの課題や労働時間の管理などの課題もあります。これらの課題を克服するために、企業は柔軟な労働政策や適切なテクノロジーの導入を検討する必要があります。","created_by":"user-1"}
{"index":{"_index":"documents","_id":"4"}}
{"title":"グリーンテクノロジーと持続可能性","content":"グリーンテクノロジーは、環境への負荷を最小限に抑えるための技術革新を指します。再生可能エネルギー、エネルギー効率の向上、廃棄物のリサイクルなど、様々な分野でグリーンテクノロジーの進化が進んでいます。これにより、地球温暖化や環境汚染といった課題に対処するための解決策が提供されています。持続可能な未来を実現するためには、グリーンテクノロジーの積極的な採用が不可欠です。","created_by":"user-2"}
{"index":{"_index":"documents","_id":"5"}}
{"title":"人工知能と倫理","content":"人工知能(AI)の進化は、私たちの生活や社会に大きな影響を与えています。自動運転車や自動化された顧客サービスなど、AIの応用範囲はますます広がっています。しかし、AIの使用には倫理的な問題も伴います。例えば、個人のプライバシーの侵害や差別的な意思決定が起こる可能性があります。このようなリスクを最小限に抑えるために、AIの開発と使用には倫理的なガイドラインが必要です。","created_by":"user-2"}

検索する

キーワード検索

content フィールドに「セキュリティ」を含むドキュメントを検索してみます。

リクエス

GET /documents/_search
{
  "query": {
    "match": {
      "content": "セキュリティ"
    }
  }
}

レスポンス

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.4361092,
    "hits": [
      {
        "_index": "documents",
        "_id": "1",
        "_score": 1.4361092,
        "_source": {
          "title": "サイバーセキュリティとプライバシー保護",
          "content": "サイバーセキュリティとプライバシー保護は、現代社会においてますます重要な問題となっています。インターネットの普及により、個人や企業のデータがオンライン上で共有される機会が増え、それに伴う脅威も増加しています。個人情報の漏洩や機密データの盗難は、経済的な損失だけでなく、個人や組織の信頼をも損なう可能性があります。そのため、適切なセキュリティ対策とプライバシー保護が求められています。",
          "created_by": "user-1"
        }
      }
    ]
  }
}

複数フィールドに対する検索

title と content の複数フィールドに対して、「テクノロジー」で検索します。

リクエス

GET /documents/_search
{
  "query": {
    "multi_match": {
      "query": "テクノロジー",
      "fields": [
        "title",
        "content"
      ]
    }
  }
}

レスポンス

{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1.2978076,
    "hits": [
      {
        "_index": "documents",
        "_id": "2",
        "_score": 1.2978076,
        "_source": {
          "title": "テクノロジーと教育の融合",
          "content": "現代の教育では、テクノロジーがますます重要な役割を果たしています。インタラクティブな学習アプリケーションやオンライン教材を活用することで、生徒たちはより効果的に学び、自分のペースで進歩することができます。また、教師はデータ分析ツールを使用して生徒の進歩を追跡し、個々のニーズに合った指導を提供することができます。テクノロジーと教育の融合は、教育の質とアクセス性を向上させるための重要な手段です。",
          "created_by": "user-1"
        }
      },
      {
        "_index": "documents",
        "_id": "3",
        "_score": 0.8673502,
        "_source": {
          "title": "リモートワークの未来",
          "content": "リモートワークは、近年急速に普及しています。技術の進歩により、従業員は自宅やカフェからでも仕事を行うことが可能になりました。これにより、通勤時間の削減や地理的な制約の克服が可能になり、生産性の向上が期待されています。しかし、リモートワークにはコミュニケーションの課題や労働時間の管理などの課題もあります。これらの課題を克服するために、企業は柔軟な労働政策や適切なテクノロジーの導入を検討する必要があります。",
          "created_by": "user-1"
        }
      }
    ]
  }
}

title に「テクノロジー」を含むもの、content に「テクノロジー」を含むものがヒットしました。

AND検索

複数条件で検索します。両方の条件に該当するドキュメントを探します。

リクエス

GET /documents/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "リモートワーク"
          }
        },
        {
          "match": {
            "content": "テクノロジー"
          }
        }
      ]
    }
  }
}

レスポンス

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 2.7613173,
    "hits": [
      {
        "_index": "documents",
        "_id": "3",
        "_score": 2.7613173,
        "_source": {
          "title": "リモートワークの未来",
          "content": "リモートワークは、近年急速に普及しています。技術の進歩により、従業員は自宅やカフェからでも仕事を行うことが可能になりました。これにより、通勤時間の削減や地理的な制約の克服が可能になり、生産性の向上が期待されています。しかし、リモートワークにはコミュニケーションの課題や労働時間の管理などの課題もあります。これらの課題を克服するために、企業は柔軟な労働政策や適切なテクノロジーの導入を検討する必要があります。",
          "created_by": "user-1"
        }
      }
    ]
  }
}

OR検索

複数条件で検索します。どちらか、または両方の条件に該当するドキュメントを探します。

リクエス

GET /documents/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "content": "リモートワーク"
          }
        },
        {
          "match": {
            "content": "テクノロジー"
          }
        }
      ]
    }
  }
}

レスポンス

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 2.7613173,
    "hits": [
      {
        "_index": "documents",
        "_id": "3",
        "_score": 2.7613173,
        "_source": {
          "title": "リモートワークの未来",
          "content": "リモートワークは、近年急速に普及しています。技術の進歩により、従業員は自宅やカフェからでも仕事を行うことが可能になりました。これにより、通勤時間の削減や地理的な制約の克服が可能になり、生産性の向上が期待されています。しかし、リモートワークにはコミュニケーションの課題や労働時間の管理などの課題もあります。これらの課題を克服するために、企業は柔軟な労働政策や適切なテクノロジーの導入を検討する必要があります。",
          "created_by": "user-1"
        }
      },
      {
        "_index": "documents",
        "_id": "2",
        "_score": 1.2143419,
        "_source": {
          "title": "テクノロジーと教育の融合",
          "content": "現代の教育では、テクノロジーがますます重要な役割を果たしています。インタラクティブな学習アプリケーションやオンライン教材を活用することで、生徒たちはより効果的に学び、自分のペースで進歩することができます。また、教師はデータ分析ツールを使用して生徒の進歩を追跡し、個々のニーズに合った指導を提供することができます。テクノロジーと教育の融合は、教育の質とアクセス性を向上させるための重要な手段です。",
          "created_by": "user-1"
        }
      }
    ]
  }
}

フィルタリング

検索したい項目以外で、検索結果の絞り込みを行うことができます。 例えば、user-1 によって作成されたドキュメントの中から検索したいケースです。

リクエス

GET /documents/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "content": "これ"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "created_by.keyword": "user-2"
          }
        }
      ]
    }
  }
}

レスポンス

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 0.71658885,
    "hits": [
      {
        "_index": "documents",
        "_id": "4",
        "_score": 0.71658885,
        "_source": {
          "title": "グリーンテクノロジーと持続可能性",
          "content": "グリーンテクノロジーは、環境への負荷を最小限に抑えるための技術革新を指します。再生可能エネルギー、エネルギー効率の向上、廃棄物のリサイクルなど、様々な分野でグリーンテクノロジーの進化が進んでいます。これにより、地球温暖化や環境汚染といった課題に対処するための解決策が提供されています。持続可能な未来を実現するためには、グリーンテクノロジーの積極的な採用が不可欠です。",
          "created_by": "user-2"
        }
      },
      {
        "_index": "documents",
        "_id": "5",
        "_score": 0.678048,
        "_source": {
          "title": "人工知能と倫理",
          "content": "人工知能(AI)の進化は、私たちの生活や社会に大きな影響を与えています。自動運転車や自動化された顧客サービスなど、AIの応用範囲はますます広がっています。しかし、AIの使用には倫理的な問題も伴います。例えば、個人のプライバシーの侵害や差別的な意思決定が起こる可能性があります。このようなリスクを最小限に抑えるために、AIの開発と使用には倫理的なガイドラインが必要です。",
          "created_by": "user-2"
        }
      }
    ]
  }
}

レスポンスに含める項目の制御

_source の設定によって、検索でヒットしたドキュメントの項目のうち、レスポンスに含める項目を指定することができます。
content 以外の、title, created_by のみを返すようにしてます。

リクエス

GET /documents/_search
{
  "query": {
    "multi_match": {
      "query": "テクノロジー",
      "fields": [
        "content"
      ]
    }
  },
  "_source": [
    "title",
    "created_by"
  ]
}

レスポンス

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1.2143419,
    "hits": [
      {
        "_index": "documents",
        "_id": "2",
        "_score": 1.2143419,
        "_source": {
          "title": "テクノロジーと教育の融合",
          "created_by": "user-1"
        }
      },
      {
        "_index": "documents",
        "_id": "3",
        "_score": 0.8673502,
        "_source": {
          "title": "リモートワークの未来",
          "created_by": "user-1"
        }
      }
    ]
  }
}

ハイライト

ドキュメントのうちどの辺りがヒットしたのかを取得することができます。また、ヒットしたワードは<em>タグで囲われた状態で取得することができます。

リクエス

GET /documents/_search
{
  "query": {
    "multi_match": {
      "query": "テクノロジー",
      "fields": [
        "content"
      ]
    }
  },
  "_source": [
    "title"
  ],
  "highlight": {
    "fields": {
      "content": {}
    }
  }
}

レスポンス

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1.2143419,
    "hits": [
      {
        "_index": "documents",
        "_id": "2",
        "_score": 1.2143419,
        "_source": {
          "title": "テクノロジーと教育の融合"
        },
        "highlight": {
          "content": [
            "現代の教育では、<em>テクノロジー</em>がますます重要な役割を果たしています。",
            "<em>テクノロジー</em>と教育の融合は、教育の質とアクセス性を向上させるための重要な手段です。"
          ]
        }
      },
      {
        "_index": "documents",
        "_id": "3",
        "_score": 0.8673502,
        "_source": {
          "title": "リモートワークの未来"
        },
        "highlight": {
          "content": [
            "これらの課題を克服するために、企業は柔軟な労働政策や適切な<em>テクノロジー</em>の導入を検討する必要があります。"
          ]
        }
      }
    ]
  }
}

検索結果のソート

デフォルトの検索結果順は、スコアの高い(検索条件によりヒットしている)ドキュメント順になっています。 この順序を変更できます。今回は、created_by の値の降順でソートしてみます。

リクエス

GET /documents/_search
{
  "query": {
    "match": {
      "content": "これ"
    }
  },
  "sort": [
    {
      "created_by.keyword": {
        "order": "desc"
      }
    }
  ]
}

レスポンス

{
  "took": 31,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 5,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [
      {
        "_index": "documents",
        "_id": "4",
        "_score": null,
        "_source": {
          "title": "グリーンテクノロジーと持続可能性",
          "content": "グリーンテクノロジーは、環境への負荷を最小限に抑えるための技術革新を指します。再生可能エネルギー、エネルギー効率の向上、廃棄物のリサイクルなど、様々な分野でグリーンテクノロジーの進化が進んでいます。これにより、地球温暖化や環境汚染といった課題に対処するための解決策が提供されています。持続可能な未来を実現するためには、グリーンテクノロジーの積極的な採用が不可欠です。",
          "created_by": "user-2"
        },
        "sort": [
          "user-2"
        ]
      },
      {
        "_index": "documents",
        "_id": "5",
        "_score": null,
        "_source": {
          "title": "人工知能と倫理",
          "content": "人工知能(AI)の進化は、私たちの生活や社会に大きな影響を与えています。自動運転車や自動化された顧客サービスなど、AIの応用範囲はますます広がっています。しかし、AIの使用には倫理的な問題も伴います。例えば、個人のプライバシーの侵害や差別的な意思決定が起こる可能性があります。このようなリスクを最小限に抑えるために、AIの開発と使用には倫理的なガイドラインが必要です。",
          "created_by": "user-2"
        },
        "sort": [
          "user-2"
        ]
      },
      {
        "_index": "documents",
        "_id": "1",
        "_score": null,
        "_source": {
          "title": "サイバーセキュリティとプライバシー保護",
          "content": "サイバーセキュリティとプライバシー保護は、現代社会においてますます重要な問題となっています。インターネットの普及により、個人や企業のデータがオンライン上で共有される機会が増え、それに伴う脅威も増加しています。個人情報の漏洩や機密データの盗難は、経済的な損失だけでなく、個人や組織の信頼をも損なう可能性があります。そのため、適切なセキュリティ対策とプライバシー保護が求められています。",
          "created_by": "user-1"
        },
        "sort": [
          "user-1"
        ]
      },
      {
        "_index": "documents",
        "_id": "2",
        "_score": null,
        "_source": {
          "title": "テクノロジーと教育の融合",
          "content": "現代の教育では、テクノロジーがますます重要な役割を果たしています。インタラクティブな学習アプリケーションやオンライン教材を活用することで、生徒たちはより効果的に学び、自分のペースで進歩することができます。また、教師はデータ分析ツールを使用して生徒の進歩を追跡し、個々のニーズに合った指導を提供することができます。テクノロジーと教育の融合は、教育の質とアクセス性を向上させるための重要な手段です。",
          "created_by": "user-1"
        },
        "sort": [
          "user-1"
        ]
      },
      {
        "_index": "documents",
        "_id": "3",
        "_score": null,
        "_source": {
          "title": "リモートワークの未来",
          "content": "リモートワークは、近年急速に普及しています。技術の進歩により、従業員は自宅やカフェからでも仕事を行うことが可能になりました。これにより、通勤時間の削減や地理的な制約の克服が可能になり、生産性の向上が期待されています。しかし、リモートワークにはコミュニケーションの課題や労働時間の管理などの課題もあります。これらの課題を克服するために、企業は柔軟な労働政策や適切なテクノロジーの導入を検討する必要があります。",
          "created_by": "user-1"
        },
        "sort": [
          "user-1"
        ]
      }
    ]
  }
}

おわりに

基本的な検索方法を試してみました。
これらは基本的なものですが、組み合わせでより複雑な検索も可能です。