私は別のアプリケーションによってタグ付けされたテキストを持っています。私はこれらのタグが照会されたときに返されるクエリを望んでいません。ElasticSearchはhtmlタグを検索できないようにします
私はhtml_stripを使ってみましたが、まだこれらのタグを検索できました。
タグの例はさまざまですが、<PERSON>Freddy</PERSON>
と似ています。 私も<span>Freddy</span>
で試しましたが、両方の結果でスパンまたはPERSONのいずれかを検索して、他の場所にこれらの単語が表示されない場合でも結果を得ることができます。
私は間違っていますか?
インデックスマッピング:
{
"mapping": {
"properties":{
"text":{
"type":"text",
"analyzer":"my_analyzer"
}
}
},
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "keyword",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "html_strip"
}
}
}
}
}
クエリ
{
"query":{
"match":{
"text":"span"
}
},
"highlight":{
"fields":{
"text":{}
}
}
}
応答:
..
"hits": [
{
"_index": "my_index",
"_type": "wat",
"_id": "1",
"_score": 0.39556286,
"_source": {
"text": "Hello <span>Freddy</span>"
},
"highlight": {
"text": [
"Hello <<em>span</em>>Freddy</<em>span</em>>"
]
}
}
]
...
あなたのマッピングには誤植があります: 'analzer'は' analyzer'を読むべきです – Val
@Valこれを指摘してくれてありがとう。私はアナライザーに変更しましたが、問題を解決しませんでした.. – aclokay
インデックスを削除し、再作成してデータを再インデックス付けしましたか? – Val