私はバックエンドで弾性検索を使用してCMSを構築しています。私のチームは弾性検索を使用することに決めました。私はそれが初めてです。私は主に以前のプロジェクトのmongobとmongooseを使用します。 mongodbでは、間違ってフィールドを割り当てたり、必要なフィールドを完全にスキップしたりすると、mongodbはエラーをスローします。弾性検索で必須フィールドを適用するにはどうすればよいですか?
elasticsearchに必須フィールドを強制する方法はありますか?
私はバックエンドで弾性検索を使用してCMSを構築しています。私のチームは弾性検索を使用することに決めました。私はそれが初めてです。私は主に以前のプロジェクトのmongobとmongooseを使用します。 mongodbでは、間違ってフィールドを割り当てたり、必要なフィールドを完全にスキップしたりすると、mongodbはエラーをスローします。弾性検索で必須フィールドを適用するにはどうすればよいですか?
elasticsearchに必須フィールドを強制する方法はありますか?
機能には組み込まれていないため、マッピングに必須フィールドまたは必須フィールドを定義できます。多くの場合、クライアント側でチェックを行うことをお勧めします。
しかし、Elasticsearch 5.xでは、Ingestノードを使用してトリックを行う可能性があります。
実際の のインデックス作成が行われる前に、取り込みノードを使用してドキュメントを前処理することができます。この前処理は、バルク要求とインデックス要求を傍受し、 の変換を適用した後、文書をインデックスまたはバルクAPIに戻すインジェストノード によって行われます。
インデックスを作成する前にドキュメントを事前処理するには、 が一連のプロセッサーを指定するパイプラインを定義します。各プロセッサは、何らかの方法で 文書を変換します。
このアプローチを使用する可能性を示す例です。詳細については
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"script": {
"lang": "painless",
"inline": "if (ctx.title == null) { throw new Exception('Document does not have the *title* field') }"
}
}
]
},
"docs": [
{
"_index": "index",
"_type": "type",
"_id": "1",
"_source": {
"title": "Elasticsearch 101"
}
},
{
"_index": "index",
"_type": "type",
"_id": "2",
"_source": {
"company": "Elastic"
}
}
]
}
ここで見てください - https://www.elastic.co/guide/en/elasticsearch/reference/5.2/ingest.html