2016-03-21 12 views
0

Hallo Ich möchte benutzerdefinierte Routing auf bestimmten Feld "userId" auf meinem Es v2.0 festlegen. Aber es gibt mir Fehler.Ich weiß nicht, wie man benutzerdefinierte Routing auf ES v2.0elasticsearch routing auf spezifischem Feld

Bitte helfen Sie mir aus.Thanks im Voraus.Belieb ist Fehlermeldung, während benutzerdefinierte Routing mit bestehenden Index erstellen.

{ 
    "error": { 
    "root_cause": [ 
     { 
      "type": "mapper_parsing_exception", 
      "reason": "Mapping definition for [_routing] has unsupported parameters: [path : userId]" 
     } 
    ], 
    "type": "mapper_parsing_exception", 
    "reason": "Mapping definition for [_routing] has unsupported parameters: [path : userId]" 
    }, 
"status": 400 
} 

Antwort

1

In ES 2.0, das _routing.path Meta-Feld has been removed. So, jetzt müssen Sie es wie diese stattdessen tun:

In Ihrem Mapping, können Sie nur das Routing angeben erforderlich ist (aber Sie können nicht path angeben mehr):

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "_routing": { 
     "required": true 
     }, 
     "properties": { 
     "name": { 
      "type": "string" 
     } 
     } 
    } 
    } 
} 

Und dann, wenn Sie Index ein Dokument Sie können den Routing-Wert in der Abfragezeichenfolge wie folgt angeben:

PUT my_index/my_type/1?routing=bar 
{ 
    "name": "foo" 
} 
+0

Ich möchte es auf Feld namens UserId in meinem Index routen.Ich möchte Routing nicht manuell in Abfrage einfügen. –

+0

Leider haben Sie mit ES 2.x keine andere Wahl, es ist jetzt so. Dies wurde hauptsächlich [aus Leistungsgründen] getan (https://github.com/elastic/elasticsearch/issues/6730) – Val

+0

yess val ... Vielen Dank. –

Verwandte Themen