Mit der Highlight-Funktion von Elasticsearch:für mehrwertig Felder
"highlight": {
"fields": {
"tags": { "number_of_fragments": 0 }
}
}
Mit number_of_fragments: 0
werden keine Fragmente erzeugt, sondern der ganze Inhalt des Feldes zurückgeführt wird. Dies ist nützlich für kurze Texte, da Dokumente normal angezeigt werden können und Personen leicht nach hervorgehobenen Teilen suchen können.
Wie verwenden Sie das, wenn ein Dokument ein Array mit mehreren Werten enthält?
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 }
}
}
}
Nun, was ich möchte den Benutzer zeigen:
1 Ergebnis:
Dokument 1 mit dem Stichwort:
"ein Hit Tages", „zwei foo tag "," drei hit tag "," vier foo tag "
Leider ist dies das Ergebnis der Abfrage:
{
"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"
]
}
}
]
}
}
Wie kann ich diese verwenden, um zu erhalten:
"tags": [
"one <em>hit</em> tag",
"two foo tag",
"three <em>hit</em> tag",
"four foo tag"
]
Immer noch nichts dabei? Wie hast du dieses Problem gelöst? Ich habe das gleiche Problem. – vmeln
Laut [dieser Ausgabe] (https://github.com/elastic/elasticsearch/issues/7416) fehlt diese Funktion noch ... –