Với tôi đã xác định bộ lọc char html dải của tôi trong phân tích tùy chỉnh của tôiElasticsearch: Strip thẻ HTML trước khi tài liệu lập chỉ mục với bộ lọc html_strip không làm việc
Khi tôi chỉ một tài liệu với nội dung html
Sau đó Tôi hy vọng html sẽ bị loại ra khỏi nội dung được lập chỉ mục
và khi truy xuất tài liệu được trả về từ i Ndex shoult không chứa HMTL
THỰC TẾ: Các doc lập chỉ mục html chứa Các lấy doc html chứa
Tôi đã cố gắng xác định các phân tích như index_analyzer như người ta mong đợi và một vài người khác ra khỏi sự tuyệt vọng search_analyzer và phân tích. Dường như không có bất kỳ ảnh hưởng nào đối với tài liệu được lập chỉ mục hoặc truy xuất.
thử nghiệm Doc Indexing chống HTML_Strip lĩnh vực được phân tích:
YÊU CẦU: Tài liệu Ví dụ POST với nội dung 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>"
}
Dự kiến : Dữ liệu được lập chỉ mục để có được phân tích cú pháp thông qua việc phân tích html. thực tế: Dữ liệu được lập chỉ mục với html
ỨNG PHÓ
{
"_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>"
}
}
Cài đặt và Doc Mapping
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"
}
}
}
}
}
}
thử nghiệm để chứng minh Tuỳ chỉnh Analyzer hoạt động hoàn hảo:
YÊU CẦU
GET /html_poc_v2/_analyze?analyzer=my_html_analyzer
{<p>Some déjà vu <a href="http://somedomain.com>">website</a>}
đáp ứng
{
"tokens": [
{
"token": "Some",… "position": 1
},
{
"token": "déjà",… "position": 2
},
{
"token": "vu",… "position": 3
},
{
"token": "website",… "position": 4
}
]
}
Dưới mui xe
đi dưới mui xe với một trong dòng kịch bản chứng minh thêm rằng phân tích html của tôi phải được bỏ qua
YÊU CẦU
GET /html_poc_v2/html_poc_type/_search?pretty=true
{
"query" : {
"match_all" : { }
},
"script_fields": {
"terms" : {
"script": "doc[field].values",
"params": {
"field": "title"
}
}
}
}
ỨNG PHÓ
{ …
"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"
]
]
}
}
]
}
}
Tương tự như câu hỏi này ở đây: Why HTML tag is searchable even if it was filtered in elastic search
Tôi cũng đã đọc doc tuyệt vời này: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html
ES phiên bản: 1.7.2
Hãy Cứu giúp.
Đây cũng là trường * _source * mà tôi muốn ngăn không cho các thẻ html. Nói cách khác, cùng với việc không lập chỉ mục các thẻ html, tôi sẽ không muốn trả về html trên GET/Search. Bất kỳ ý tưởng/Gợi ý về cách để đạt được điều này? – DaddyMoe
tôi đã cập nhật câu trả lời – keety
Cảm ơn một loạt các keety. Tuyệt vời cho thấy, mặc dù một công việc xung quanh, bạn là đúng, không phải là một ý tưởng tốt. Nó cũng sẽ yêu cầu bật kịch bản trên cụm Live của tôi. Cũng sẽ không tương thích với các _plugins điểm cuối elasticsearch tùy chỉnh mà chúng ta có được gắn với các trường kéo từ _source của các tài liệu đã nói của tôi như tiêu đề, nội dung và mô tả. – DaddyMoe