2016-05-23 2 views
1

質問:文書の_sourceからhtmlを削除する方法はありますか? htmlのストリッピングは、定期的に実行することもできます。Elasticsearch文書の_sourceフィールドを変更する方法

私はelasticsearchに来るデータに、インデックスになる前に不要なhtmlsタグを取り除いているAnalyzerに対してインデックスを作成しています。

クエリでは、クライアントに返されるhtmlを持つ元のコンテンツを持つ_sourceフィールドを取得します。

注:

  • 私はelasticsearchに渡される前にデータをクリーンアップすることはできませんが、私はこれを制御できません。
  • 私のクライアントはelasticsearchからデータを取得すると、データを表示する前にjavascriptを使用してストリッピングすることはできますが、オプションは使用できません。
+0

'transform'を使用すると、' _source'を編集/変更できます:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/ mapping-transform.html。ただし、2.0.0からは置き換えなくなりました。 –

+0

ありがとう@ andrei-stefan、理想的には廃止予定の手段ではありません。また、 'transform'ドキュメントによると、"結果はソースに格納されていません "。 – DaddyMoe

+0

_sourceは変更できません。 _sourceには、あなたがelasticsearchに入れたデータが含まれています。定義したすべてのマッピングは入力jsonオブジェクトに設定されますが、_sourceは変更されません。 –

答えて

1

_sourceは単にインデックスされたJSONを保存します。それを変更することはできません。

インデックスを作成してコンテンツをそのまま保存する前に、完全にストリップしたい場合は、マッパー添付プラグインを使用できます。マッピングを定義するときにcontent_typeを「html」に分類できます。 "

マッパーの添付は、特に複数のドキュメントタイプを扱う場合には便利ですが、特に、htmlタグを取り除く目的でこれを使用するだけで十分です(これはhtml_strip charフィルタ)。

ただし、予告なしに、htmlタグは保存されません。どういうわけかそれらのタグが必要な場合は、元のコンテンツを格納する別のフィールドを定義することをお勧めします。別の注意:マッパー添付ファイルのためにマルチファイルを指定することはできないので、マッパー添付ファイルの外にそれを保存する必要があります。下記の私の実例を見て​​ください。

あなたはこのマッピングをもたらすために必要があります:

{ 
    "html5-es" : { 
    "aliases" : { }, 
    "mappings" : { 
     "document" : { 
     "properties" : { 
      "delete" : { 
      "type" : "boolean" 
      }, 
      "file" : { 
      "type" : "attachment", 
      "fields" : { 
       "content" : { 
       "type" : "string", 
       "store" : true, 
       "term_vector" : "with_positions_offsets", 
       "analyzer" : "autocomplete" 
       }, 
       "author" : { 
       "type" : "string", 
       "store" : true, 
       "term_vector" : "with_positions_offsets" 
       }, 
       "title" : { 
       "type" : "string", 
       "store" : true, 
       "term_vector" : "with_positions_offsets", 
       "analyzer" : "autocomplete" 
       }, 
       "name" : { 
       "type" : "string" 
       }, 
       "date" : { 
       "type" : "date", 
       "format" : "strict_date_optional_time||epoch_millis" 
       }, 
       "keywords" : { 
       "type" : "string" 
       }, 
       "content_type" : { 
       "type" : "string" 
       }, 
      "content_length" : { 
       "type" : "integer" 
       }, 
       "language" : { 
       "type" : "string" 
       } 
      } 
      }, 
      "hash_id" : { 
      "type" : "string" 
      }, 
      "path" : { 
      "type" : "string" 
      }, 
      "raw_content" : { 
      "type" : "string", 
      "store" : true, 
      "term_vector" : "with_positions_offsets", 
      "analyzer" : "raw" 
      }, 
      "title" : { 
      "type" : "string" 
      } 
     } 
     } 
    }, 
    "settings" : { //insert your own settings here }, 
    "warmers" : { } 
    } 
} 

NESTで、私のようなコンテンツ組み立てるようなもの:私はある意味でこれをテストしている

Attachment attachment = new Attachment(); 
attachment.Content = Convert.ToBase64String(File.ReadAllBytes("path/to/document")); 
attachment.ContentType = "html"; 

Document document = new Document(); 
document.File = attachment; 
document.RawContent = InsertRawContentFromString(originalText); 

を - 結果は

"file": { 
    "_content": "PGh0bWwgeG1sbnM6TWFkQ2FwPSJodHRwOi8vd3d3Lm1hZGNhcHNvZnR3YXJlLmNvbS9TY2hlbWFzL01hZENhcC54c2QiPg0KICA8aGVhZCAvPg0KICA8Ym9keT4NCiAgICA8aDE+VG9waWMxMDwvaDE+DQogICAgPHA+RGVsZXRlIHRoaXMgdGV4dCBhbmQgcmVwbGFjZSBpdCB3aXRoIHlvdXIgb3duIGNvbnRlbnQuIENoZWNrIHlvdXIgbWFpbGJveC48L3A+DQogICAgPHA+wqA8L3A+DQogICAgPHA+YXNkZjwvcD4NCiAgICA8cD7CoDwvcD4NCiAgICA8cD4xMDwvcD4NCiAgICA8cD7CoDwvcD4NCiAgICA8cD5MYXZlbmRlci48L3A+DQogICAgPHA+wqA8L3A+DQogICAgPHA+MTAvNiAxMjowMzwvcD4NCiAgICA8cD7CoDwvcD4NCiAgICA8cD41IDA5PC9wPg0KICAgIDxwPsKgPC9wPg0KICAgIDxwPjExIDQ3PC9wPg0KICAgIDxwPsKgPC9wPg0KICAgIDxwPkhhbGxvd2VlbiBpcyBpbiBPY3RvYmVyLjwvcD4NCiAgICA8cD7CoDwvcD4NCiAgICA8cD5qb2c8L3A+DQogIDwvYm9keT4NCjwvaHRtbD4=", 
    "_content_length": 0, 
    "_content_type": "html", 
    "_date": "0001-01-01T00:00:00", 
    "_title": "Topic10" 
}, 
"delete": false, 
"raw_content": "<h1>Topic10</h1><p>Delete this text and replace it with your own content. Check your mailbox.</p><p> </p><p>asdf</p><p> </p><p>10</p><p> </p><p>Lavender.</p><p> </p><p>10/6 12:03</p><p> </p><p>5 09</p><p> </p><p>11 47</p><p> </p><p>Halloween is in October.</p><p> </p><p>jog</p>" 
}, 
"highlight": { 
"file.content": [ 
    "\n <em>Topic10</em>\n\n Delete this text and replace it with your own content. Check your mailbox.\n\n  \n\n asdf\n\n  \n\n 10\n\n  \n\n Lavender.\n\n  \n\n 10/6 12:03\n\n  \n\n 5 09\n\n  \n\n 11 47\n\n  \n\n Halloween is in October.\n\n  \n\n jog\n\n " 
    ] 
} 
関連する問題