2017-08-08 3 views
0

Ich habe einen Index: (Elasticsearch 5.5.1)Elasticsearch -kein Mapping gefunden

PUT myindex 
{ 
    "settings" : { 
    "number_of_shards" : 3, 
    "number_of_replicas" : 2 
    }, 
    "mappings" : { 
    "mymap" : { 
     "properties" : { 
     "data" : { 
      "type": "text" 
     } 
     } 
    } 
    } 
} 

Nun, wenn ich folgende Aufgaben auszuführen:

GET myindex/_search?q=content:*&filter_path=hits.hits._source.path.real&sort=file.last_modified:desc&size=10 

Die Daten erhalte ich die Daten, die ich alle erwarten gut.

wenn ich den Anruf ändern direkt gegen Elasticsearch zu arbeiten:

GET localhost:9200/myindex/_search?q=content:*&filter_path=hits.hits._source.path.real&sort=file.last_modified:desc&size=10 

es beklagt, dass es Keine Zuordnung gefunden für [file.last_modified], um auf zu sortieren.

Warum die Diskrepanz?

+0

Die erste Anfrage ist nach Kibana? – aclokay

+0

@aclokay Ich benutze Kibana als mein Testkabel, aber ich möchte das für meine Anwendung entfernen und direkt auf Elastic telefonieren. Was muss ich ändern, damit dies mit Elastic funktioniert? – bilpor

Antwort

0

In Kibana der /config/kibana.yml configaration Datei haben Sie diesen Eintrag:

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values. 
# The default is 'localhost', which usually means remote machines will not be able to connect. 
# To allow connections from remote users, set this parameter to a non-loopback address. 
#server.host: "localhost" 

So Kibana trifft den Host, der hier standardmäßig angegeben. Wenn Sie die Konsole von Kibana verwenden, wird der hier konfigurierte Host automatisch angehängt. Durch Klicken auf die Schaltfläche "Schraubenschlüssel" und Copy as cURL können Sie überprüfen, was wirklich an elasticsearch gesendet wurde.

Zum Beispiel dies in Kibana schlagen:

GET my_index/test/_search 

die quivalent mit Curl (ohne Änderungen in kibana.yml) ist:

curl -XGET "http://localhost:9200/my_index/test/_search" 

aktualisieren: Der Punkt ist, dass Kibana bereits weiß, dass Sie treffen auf localhost, weil es in kibana.yml konfiguriert ist, so dass Sie die URL nicht erneut eingeben können, da im Hintergrund GET /localhost:9200/localhost:9200/myindex/_search erstellt würde. Sie verwenden die vollständige URL, wenn Sie elasticsearch mit einem REST-Client (wie cURL, Postman usw.) aufrufen. In Kibana triffst du direkt auf Index.

+0

Wenn ich meinen Anruf zu 'GET localhost: 9200/myindex/_search ändern? Q = Inhalt: *' Ich bekomme keine Daten zurück. In Kibana mache ich – bilpor

+0

@bilpor - Ich habe meine Antwort aktualisiert. – Joanna

+0

Ah ..... Also ich muss etwas wie Postman verwenden, um den Anruf über localhost zu beweisen: 9200 – bilpor

Verwandte Themen