2017-03-21 11 views
0

私はバックエンドで弾性検索を使用してCMSを構築しています。私のチームは弾性検索を使用することに決めました。私はそれが初めてです。私は主に以前のプロジェクトのmongobとmongooseを使用します。 mongodbでは、間違ってフィールドを割り当てたり、必要なフィールドを完全にスキップしたりすると、mongodbはエラーをスローします。弾性検索で必須フィールドを適用するにはどうすればよいですか?

elasticsearchに必須フィールドを強制する方法はありますか?

答えて

0

機能には組み込まれていないため、マッピングに必須フィールドまたは必須フィールドを定義できます。多くの場合、クライアント側でチェックを行うことをお勧めします。

しかし、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

関連する問題