を動作していない前に、その後、私はhtmlがインデックスされたコンテンツのストリップであることを期待しますElasticsearch:ストリップHTMLタグhtml_stripフィルターとインデックスドキュメントは、私が</p> <p><strong>HTMLコンテンツ</p> <p><strong>と</strong> Iインデックス文書私のカスタム・アナライザで私のhtmlストリップチャーフィルタを指定している</strong>考える
および NDEXはHMTL含まれていませshoult
ACTUAL: インデックス付きのドキュメントに含まれるHTML
は、私は1つが期待すると絶望のsearch_analyzerのうちいくつかの他のと同じようにindex_analyzerとしてアナライザを指定しようとしている取得したドキュメントに含まれるHTML分析装置。 Nonは、索引付けされているか取り出されているdocに何らかの影響を与えるようです。
HTML_Stripに対してテストドキュメントインデックスフィールドを分析した:
REQUEST:HTMLコンテンツ期待
POST /html_poc_v2/html_poc_type/02
{
"description": "Description <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>",
"title": "Title <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>",
"body": "Body <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>"
}
と例POSTドキュメント:HTML解析器を介して解析されているために索引付けデータ。 実際:データをHTML
応答
{
"_index": "html_poc_v2", "_type": "html_poc_type", "_id": "02", ...
"_source": {
"description": "Description <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>",
"title": "Title <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>",
"body": "Body <p>Some déjà vu <a href=\"http://somedomain.com>\">website</a>"
}
}
設定とドクマッピングでインデックス化され
PUT /html_poc_v2
{
"settings": {
"analysis": {
"analyzer": {
"my_html_analyzer": {
"type": "custom",
"tokenizer": "standard",
"char_filter": [
"html_strip"
]
}
}
},
"mappings": {
"html_poc_type": {
"properties": {
"body": {
"type": "string",
"analyzer": "my_html_analyzer"
},
"description": {
"type": "string",
"analyzer": "my_html_analyzer"
},
"title": {
"type": "string",
"search_analyser": "my_html_analyzer"
},
"urlTitle": {
"type": "string"
}
}
}
}
}
}
テスト証明するためのカスタム・アナライザは完璧に動作します:
REQUEST
GET /html_poc_v2/_analyze?analyzer=my_html_analyzer
{<p>Some déjà vu <a href="http://somedomain.com>">website</a>}
応答
{
"tokens": [
{
"token": "Some",… "position": 1
},
{
"token": "déjà",… "position": 2
},
{
"token": "vu",… "position": 3
},
{
"token": "website",… "position": 4
}
]
}
ボンネットの下に
私のhtmlアナライザは
REQUESTをスキップされていなければならないこと、さらには、インラインスクリプトプルーフとボンネットの下に行きます
ESバージョン:1.7.2
してください私もこの素晴らしいドキュメントを読んだWhy HTML tag is searchable even if it was filtered in elastic search
:ここでは、この質問に似
GET /html_poc_v2/html_poc_type/_search?pretty=true
{
"query" : {
"match_all" : { }
},
"script_fields": {
"terms" : {
"script": "doc[field].values",
"params": {
"field": "title"
}
}
}
}
応答
{ …
"hits": { ..
"hits": [
{
"_index": "html_poc_v2",
"_type": "html_poc_type",
…
"fields": {
"terms": [
[
"a",
"agrave",
"d",
"eacute",
"href",
"http",
"j",
"p",
"some",
"somedomain.com",
"title",
"vu",
"website"
]
]
}
}
]
}
}
助けて。
htmlタグを持たないようにするには、* _source *フィールドもあります。言い換えれば、htmlタグの索引付けと並んで、私はGET/Searchでもhtmlを返さないことにします。どのようにこれを達成するためのアイデア/提案? – DaddyMoe
答えを更新しました – keety
ありがとうございました。素晴らしいことは、あなたの周りの仕事は良いことだと思いますが、良い考えではありません。また、ライブクラスタでスクリプトを有効にする必要があります。また、タイトル、ボディー、説明など私の言った文書の_sourceからフィールドを引き出すために結びつけているカスタムelasticsearchエンドポイント_pluginsと互換性がありません。 – DaddyMoe