Sử dụng tính năng nổi bật của Elasticsearch:nổi bật toàn bộ nội dung trong Elasticsearch cho các lĩnh vực multivalue
"highlight": {
"fields": {
"tags": { "number_of_fragments": 0 }
}
}
Với number_of_fragments: 0
, không có mảnh vỡ được sản xuất, nhưng toàn bộ nội dung của lĩnh vực này được trả về. Điều này rất hữu ích cho các văn bản ngắn, vì các tài liệu có thể được hiển thị như bình thường, và mọi người có thể dễ dàng quét các phần được đánh dấu.
Làm thế nào để bạn sử dụng điều này khi tài liệu chứa một mảng có nhiều giá trị?
PUT /test/doc/1
{
"tags": [
"one hit tag",
"two foo tag",
"three hit tag",
"four foo tag"
]
}
GET /test/doc/_search
{
"query": {
"match": { "tags": "hit"}
},
"highlight": {
"fields": {
"tags": { "number_of_fragments": 0 }
}
}
}
Bây giờ những gì tôi muốn giới thiệu với người dùng:
1 kết quả:
Document 1, được gắn thẻ:
"một nhấn tag", "hai thẻ foo "," ba nhấn thẻ "," bốn thẻ foo "
Thật không may, đây là kết quả của truy vấn:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.10848885,
"hits": [
{
"_index": "test",
"_type": "doc",
"_id": "1",
"_score": 0.10848885,
"_source": {
"tags": [
"one hit tag",
"two foo tag",
"three hit tag",
"four foo tag"
]
},
"highlight": {
"tags": [
"one <em>hit</em> tag",
"three <em>hit</em> tag"
]
}
}
]
}
}
Làm thế nào tôi có thể sử dụng để có được:
"tags": [
"one <em>hit</em> tag",
"two foo tag",
"three <em>hit</em> tag",
"four foo tag"
]
Vẫn không có gì về điều này? Bạn đã giải quyết vấn đề này như thế nào? Tôi có cùng một vấn đề. – vmeln
Theo [vấn đề này] (https://github.com/elastic/elasticsearch/issues/7416) tính năng này vẫn bị thiếu ... –