2017-11-02 18 views
0

このエラーを試すには、Elasticsearch 2.xおよび5.xを試しましたが、これらのいずれでも動作しません。Elasticsearch - 範囲クエリが機能しません

私はElasticsearchインスタンスに多くのログを保存しています。 タイムスタンプというフィールドがあり、形式は "YYYY-MM-dd HH-mm-ss.SSS"です(たとえば、「2017-11-02 00:00:00.000」)。私はこれでPOSTMANを経由してクエリを送信しようとすると:

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

私は何も受けていないと私その範囲内の500件の以上のログがあります。私は間違って何をしていますか?

EDIT: マイ指数(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" : { } 
    } 
} 

私がリクエストを送信する受信何か:

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

とステータス200(OK)。

+0

たぶんPOSTMANは正しいことをやっていません。 'curl'を試してみてください。 –

+0

応答/エラーメッセージが表示されますか?あなたの範囲を拡張しようとすると、たぶんいくつかのデータが表示されます – Eli

+2

'timestamp'フィールドのマッピングを表示できますか? 'curl -XGET localhost:9200/your_index' – Val

答えて

0

マッピングを編集すると、問題が示されます。結果が得られないのは、文字列の "範囲"を検索しようとしているためです。これは、インデックスのフィールドの値に対しても提供しています。文字列としても扱われます。

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

Here's the elastic documentation on that mapping type

あなたは、インデックスの前にそのフィールドに日付マッピングを適用する、またはマッピングは、摂取前に適用されることを持って新しいインデックスにインデックスを再作成する必要があります。ここで

は、マッピング要求があなたのタイムスタンプ形式に準拠した、ように見えることができるものである:

PUT loganalyzer 
{ 
    "mappings": { 
    "logs": { 
     "properties": { 
     "timestamp": { 
      "type": "date", 
      "format": "YYYY-MM-dd HH-mm-ss.SSS" 
     } 
     } 
    } 
    } 
} 
関連する問題