arbeitet Ich habe folgende Abbildung in Elasticsearch 2,2Elasticsearch Geomapping mit PHP nicht
"clinics" : {
"mappings" : {
"clinic" : {
"properties" : {
"address_1" : {
"type" : "string",
"analyzer" : "standard"
},
"city" : {
"type" : "string"
},
"country" : {
"type" : "string"
},
"id" : {
"type" : "long"
},
"location" : {
"type" : "geo_point"
},
"name" : {
"type" : "string",
"analyzer" : "standard"
},
"state" : {
"type" : "string"
},
"zipcode" : {
"type" : "string",
"analyzer" : "standard"
}
}
}
}
},
Ich bin mit PHP mit Elastiquent5 den Index hinzuzufügen. mein toArray() ist:
public function toArray()
{
$array = parent::toArray();
$object = new \stdClass();
$object->lat = $array['latitude'];
$object->lon = $array['longitude'];
$array['location'] = $object;
return $array;
}
Wenn ich versuche, den Artikel der Index i die folgende Fehlermeldung hinzuzufügen:
{"error":{"root_cause":[{"type":"remote_transport_exception","reason":"[Solarman][10.0.2.15:9300][indices:data/write/index[p]]"}],"type":"illegal_argument_exception","reason":"[location] is defined as an object in mapping [clinics] but this name is already used for a field in other types"},"status":400}
im JSON-Format es richtig, in PHP-Array ergibt es ist:
array:10 [
"name" => "Clinic A"
"address_1" => "123 Main St"
"city" => "NY"
"state" => "NY"
"zipcode" => "11111"
"country" => "US"
"id" => 6968
"location" => {#526
+"lat": 45.2116373
+"lon": -72.1891546
}
]
Wenn ich dies manuell json_encode und verwenden sie die curl -XPUT 'http://localhost:9200' -d ''
es durchgeht - aber das PHP tut nicht. Irgendeine Idee, wo ich falsch gelaufen bin?
Klärung Mein Ziel ist die einzufügen koordiniert, dass meine Modelldaten innerhalb des Index zu dem Standortfeld abzubilden sind zu extrahieren, da ich schon als geo_point Art gestaltet, wie durch meinen Mapping definiert
ich nicht Ich möchte ein neues Feld benennen, um dies zu lösen. Sekundäre Anmerkung: Wie ich bereits erwähnt habe, wird ein Put mit dem JSON erfolgreich aber nicht als PHP-Objekt mit den PHP-Treibern für die elastische Suche ergeben, die den Fehler bei der Erstellung des Dokuments
können Sie mir in diesem Thread helfen? http://stackoverflow.com/questions/38043254/no-alive-nodes-found-in-your-cluster-elasticsearch – mostafaznv
Was ich tun möchte, ist, um Lage-Karte zu den Daten zu machen. Also, was Ihre Lösung für ein neues Feld vorschlagen, das ist nicht was ich will. Ich möchte, dass das Standortobjekt in das Mapping des Feldes eingefügt wird, das ich angegeben habe, da ich es als einen geo_point brauche, was ich als – azngunit81
bezeichnet habe. Ja, meine Lösung schlägt vor, ein neues Feld zu verwenden. Leider bin ich nicht sicher, wie man Ihre Anforderung ausarbeitet. –