2017-11-02 4 views
0

Um diesen Fehler zu versuchen, habe ich mit Elasticsearch 2.x und 5.x versucht, funktioniert aber in keiner von diesen.Elasticsearch - Bereichsabfrage funktioniert nicht

Ich habe viele Protokolle in meiner Elasticsearch-Instanz gespeichert. Sie haben ein Feld mit dem Namen Zeitstempel, deren Format "JJJJ-MM-TT HH-mm-ss.SSS" ist (z. B. "2017-11-02 00: 00: 00.000"). Wenn ich versuche, eine Abfrage über POSTMAN zu senden, die dies:

{ 
    "query": { 
    "range": { 
     "timestamp": { 
      "gte": "2017-10-21 00:00:00.000", 
      "lte": "2017-10-27 00:00:00.000" 
     } 
     } 
    } 
} 

erhalte ich nichts und ich, es gibt mehr als 500 Protokolle in diesem Bereich. Was mache ich falsch?

EDIT: Mein Index (loganalyzer):

{ 
    "loganalyzer" : { 
    "aliases" : { }, 
    "mappings" : { 
     "logs" : { 
     "properties" : { 
      "entireLog" : { 
      "type" : "string" 
      }, 
      "formattedMessage" : { 
      "type" : "string" 
      }, 
      "id" : { 
      "type" : "string" 
      }, 
      "level" : { 
      "type" : "string" 
      }, 
      "loggerName" : { 
      "type" : "string" 
      }, 
      "testNo" : { 
      "type" : "string" 
      }, 
      "threadName" : { 
      "type" : "string" 
      }, 
      "timestamp" : { 
      "type" : "string" 
      } 
     } 
     } 
    }, 
    "settings" : { 
     "index" : { 
     "refresh_interval" : "1s", 
     "number_of_shards" : "5", 
     "creation_date" : "1507415366223", 
     "store" : { 
      "type" : "fs" 
     }, 
     "number_of_replicas" : "1", 
     "uuid" : "9w3QQQc0S0K0NcKtOERtTw", 
     "version" : { 
      "created" : "2040699" 
     } 
     } 
    }, 
    "warmers" : { } 
    } 
} 

Was ich die Anfrage erhalten zu senden:

{ 
    "took": 429, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 0, 
     "max_score": null, 
     "hits": [] 
    } 
} 

und Status 200 (OK).

+0

Vielleicht POSTMAN nicht das Richtige tut. Versuchen Sie es mit "Curl". –

+0

Erhalten Sie eine Antwort/Fehlermeldung? Versuchen Sie, Ihren Bereich zu erweitern, vielleicht sehen Sie einige Daten – Eli

+2

Können Sie die Zuordnung Ihres Zeitstempelfeldes zeigen? 'curl -XGET localhost: 9200/your_index' – Val

Antwort

0

Ihre Bearbeitung mit den Zuordnungen weist auf das Problem hin. Der Grund, warum Sie kein Ergebnis erhalten, ist, dass es versucht, einen "Bereich" für die Zeichenfolge zu finden, die Sie für die Werte des Feldes in Ihrem Index bereitstellen, die ebenfalls als Zeichenfolge behandelt werden.

 "timestamp" : { 
     "type" : "string" 
     } 

Here's the elastic documentation on that mapping type

Sie benötigen ein aktuelles Kartenmaterial auf dieses Feld vor der Indizierung oder indizieren auf einen neuen Index anzuwenden, die die Abbildung vor der Einnahme angewandt wird.

Hier ist, was die Abbildungs ​​Anfrage aussehen könnte, in Übereinstimmung mit Ihrem Zeitformat:

PUT loganalyzer 
{ 
    "mappings": { 
    "logs": { 
     "properties": { 
     "timestamp": { 
      "type": "date", 
      "format": "YYYY-MM-dd HH-mm-ss.SSS" 
     } 
     } 
    } 
    } 
} 
Verwandte Themen