Ich versuche, ein multiField String Attribut ("prueba") für mehrsprachige Zwecke zu indizieren. Mein Mapping arbeitet mit Anmerkungenindex ein @MultiField spring-data-elasticsearch. Internationalisierungszwecke
@MultiField(
mainField = @Field(type = FieldType.String, store = true),
otherFields = {
@NestedField(dotSuffix = "cat", type = FieldType.String, store = true, indexAnalyzer = "catalan", searchAnalyzer = "catalan"),
@NestedField(dotSuffix = "ba", type = FieldType.String, store = true, indexAnalyzer = "basque", searchAnalyzer = "basque"),
@NestedField(dotSuffix = "gal", type = FieldType.String, store = true, indexAnalyzer = "galician", searchAnalyzer = "galician"),
@NestedField(dotSuffix = "en", type = FieldType.String, store = true, indexAnalyzer = "english", searchAnalyzer = "english")}
)
protected String prueba;
Das Ergebnis Mapping ist:
,
"prueba": {
"type": "string",
"store": true,
"fields": {
"prueba.ba": {
"type": "string",
"store": true,
"analyzer": "basque"
},
"prueba.cat": {
"type": "string",
"store": true,
"analyzer": "catalan"
},
"prueba.en": {
"type": "string",
"store": true,
"analyzer": "english"
},
"prueba.gal": {
"type": "string",
"store": true,
"analyzer": "galician"
}
}
},
Also, ich meine Objekt-Index, aber das Ergebnis ist nur ... `
IndexQuery query = new IndexQuery();
query.setObject(itemTransparencia);
query.setType(subportal);
String id = this.elasticsearchOperations.index(query);
GET /item_transparencia/432/_search
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "item_transparencia",
"_type": "432",
"_id": "AVTxEfvBhgYXtMQTaKx1",
"_score": 1,
"_source": {
"subportal": "432",
"titulo": null,
"prueba": "prueba la tarta de mi casa",
"subTitulo": null,
"descripcion": null,
"fechaIndexado": "2016-05-
ich nur bekommen "prueba": "pueba la tarta de mi casa".
- Kann mir jemand helfen zu verstehen, wie kann ich die verschachtelten Felder aus dem Feld "prueba" indizieren oder abrufen? -Do indexAnalyzer = "katalanisch", searchAnalyzer = "katalanisch" mir helfen, automatisch auf eine andere Sprache zu indizieren?
Vielen Dank!
Danke @Val. Das ist die richtige Antwort, aber wie kann ich meine 4 verschiedenen Wertsprachen in mein geschütztes String "prueba" Attribut einfügen? IndexQuery-Abfrage = neue IndexQuery(); query.setObject (ElementTransparencia); query.setType (Unterportal); Ist es der richtige Weg, es zu tun? weil in meinem Objekt itemTransparencia ein Set setPrueba hat und es sich um einen einzelnen String handelt. – mario1995
Sie benötigen dafür ein [Objektfeld] (https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html), da ein Multi-Feld nicht für das geeignet ist, was Sie danach. Dies kann die Form einer anderen Klasse mit 4 String-Feldern annehmen, auf die von Ihrem Objekt verwiesen wird. – Val
Ok! Ich denke darüber nach! ;) Danke nochmal! – mario1995