質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

【Elasticsearch7】data_range buckets:failed to parse date field [Now-1y] with format [yyyy-MM-dd]エラー

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 415

score 3

困っていること

Elasticsearch7で下記のようdata_range bucketsの定義をしたのですが、
以下のようなエラーが出てしまいます。

解決方法をご教授願えないでしょうか?

data_range bucketsのクエリ記法

curl -XGET'http://localhost:9200/niziu/_search?pretty' -H 'Content-Type:application/json' -d'
 > { "aggs": { 
    "genre": {
     "date_range": { 
       "field": "date" ,
       "format":"yyyy-MM-dd" , 
       "ranges":[{ "from":"Now-1y" ,"to":"Now" }] 

  }}}}'

エラー内容

{
   "error" : {
     "root_cause" : [
       {
         "type" : "parse_exception",
         "reason" : "failed to parse date field [Now-1y] with format
[yyyy-MM-dd]: [failed to parse date field [Now-1y] with format
[yyyy-MM-dd]]"
       }
     ],
     "type" : "search_phase_execution_exception",
     "reason" : "all shards failed",
     "phase" : "query",
     "grouped" : true,
     "failed_shards" : [
       {
         "shard" : 0,
         "index" : "niziu",
         "node" : "blesSRiaRTW6xRf_O8_jNg",
         "reason" : {
           "type" : "parse_exception",
           "reason" : "failed to parse date field [Now-1y] with format
[yyyy-MM-dd]: [failed to parse date field [Now-1y] with format
[yyyy-MM-dd]]",
           "caused_by" : {
             "type" : "illegal_argument_exception",
             "reason" : "failed to parse date field [Now-1y] with format
[yyyy-MM-dd]",
             "caused_by" : {
               "type" : "date_time_parse_exception",
               "reason" : "Text 'Now-1y' could not be parsed at index 0"
             }
           }
         }
       }
     ]
   },
   "status" : 400
}

試したこと1

format関連でエラーが発生しているようだったので
'Now-1y'を'Now-1M'に範囲を変えてみたが、エラー内容に変化はなかった

試したこと2

同じくformat関連でエラーが発生しているようだったので
クエリ記法で「"format":"yyyy-MM-dd" , 」を抜いてみたが
以下のようなエラーが発生した

{
   "error" : {
     "root_cause" : [
       {
         "type" : "parse_exception",
         "reason" : "failed to parse date field [Now-1y] with format
[strict_date_optional_time||epoch_millis]: [failed to parse date field
[Now-1y] with format [strict_date_optional_time||epoch_millis]]"
       }
     ],
     "type" : "search_phase_execution_exception",
     "reason" : "all shards failed",
     "phase" : "query",
     "grouped" : true,
     "failed_shards" : [
       {
         "shard" : 0,
         "index" : "niziu",
         "node" : "blesSRiaRTW6xRf_O8_jNg",
         "reason" : {
           "type" : "parse_exception",
           "reason" : "failed to parse date field [Now-1y] with format
[strict_date_optional_time||epoch_millis]: [failed to parse date field
[Now-1y] with format [strict_date_optional_time||epoch_millis]]",
           "caused_by" : {
             "type" : "illegal_argument_exception",
             "reason" : "failed to parse date field [Now-1y] with format
[strict_date_optional_time||epoch_millis]",
             "caused_by" : {
               "type" : "date_time_parse_exception",
               "reason" : "Failed to parse with all enclosed parsers"
             }
           }
         }
       }
     ]
   },
   "status" : 400
}

データの中身

{"index":{"_index":"niziu","_type":"_doc"}}
{ "name": "山口 真子" , "date": "2020-12-24", "genre": "st1" , "price": "10"
}

{"index":{"_index":"niziu","_type":"_doc"}}
{ "name": "花橋 梨緒" , "date": "2020-12-23", "genre": "st1" , "price":
"100" }

{"index":{"_index":"niziu","_type":"_doc"}}
{ "name": "勝村 摩耶" , "date": "2020-12-23", "genre": "st2" , "price": "50"
}

補足情報(FW/ツールのバージョンなど)

CentOS8
Elasticsearch7.10

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

原因と解決方法

クエリで指定Nowを指定されていますが、小文字でnowを指定されるとエラーが解消されるかと思います。
定義 : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#date-math

検証

マッピングが指定されていなかったので、以下の内容で仮定して検証を行いました。

{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "date": {
        "type": "date",
        "format": "date_optional_time"
      },
      "genre": {
        "type": "text"
      },
      "price": {
        "type": "integer"
      }
    }
  }
}

この状態で、添付のクエリに似た物を投げてみます。

{
  "aggs": {
    "genre": {
      "date_range": {
        "field": "date",
        "ranges": [
          {
            "from": "Now-1y",
            "to": "Now"
          }
        ]
      }
    }
  }
}

質問と同様のエラーが得られることを確認しました。

{
  "error" : {
    "root_cause" : [
      {
        "type" : "parse_exception",
        "reason" : "failed to parse date field [Now-1y] with format [date_optional_time]: [failed to parse date field [Now-1y] with format [date_optional_time]]"
      }
    ],
    "type" : "search_phase_execution_exception",
    "reason" : "all shards failed",
    "phase" : "query",
    "grouped" : true,
    "failed_shards" : [
      {
        "shard" : 0,
        "index" : "niziu",
        "node" : "1iRyCg0_RXWtawkBw9GZLw",
        "reason" : {
          "type" : "parse_exception",
          "reason" : "failed to parse date field [Now-1y] with format [date_optional_time]: [failed to parse date field [Now-1y] with format [date_optional_time]]",
          "caused_by" : {
            "type" : "illegal_argument_exception",
            "reason" : "failed to parse date field [Now-1y] with format [date_optional_time]",
            "caused_by" : {
              "type" : "date_time_parse_exception",
              "reason" : "Text 'Now-1y' could not be parsed at index 0"
            }
          }
        }
      }
    ]
  },
  "status" : 400
}

クエリ内のNowを nowに変換してリクエストしてみます。

{
  "aggs": {
    "genre": {
      "date_range": {
        "field": "date",
        "ranges": [
          {
            "from": "now-1y",
            "to": "now"
          }
        ]
      }
    }
  }
}

結果、想定した検索結果を得ることができました。

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "niziu",
        "_type" : "_doc",
        "_id" : "tDCx13YBaiqaF_IqRiiW",
        "_score" : 1.0,
        "_source" : {
          "name" : "山口 真子",
          "date" : "2020-12-24",
          "genre" : "st1",
          "price" : "10"
        }
      },
      {
        "_index" : "niziu",
        "_type" : "_doc",
        "_id" : "tTCx13YBaiqaF_IqRiiW",
        "_score" : 1.0,
        "_source" : {
          "name" : "花橋 梨緒",
          "date" : "2020-12-23",
          "genre" : "st1",
          "price" : "100"
        }
      },
      {
        "_index" : "niziu",
        "_type" : "_doc",
        "_id" : "tjCx13YBaiqaF_IqRiiW",
        "_score" : 1.0,
        "_source" : {
          "name" : "勝村 摩耶",
          "date" : "2020-12-23",
          "genre" : "st2",
          "price" : "50"
        }
      }
    ]
  },
  "aggregations" : {
    "genre" : {
      "buckets" : [
        {
          "key" : "2020-01-06T12:44:01.294Z-2021-01-06T12:44:01.294Z",
          "from" : 1.578314641294E12,
          "from_as_string" : "2020-01-06T12:44:01.294Z",
          "to" : 1.609937041294E12,
          "to_as_string" : "2021-01-06T12:44:01.294Z",
          "doc_count" : 3
        }
      ]
    }
  }
}

以上、ご参考までに。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/01/18 15:46

    ご連絡が大変遅れてしまい申し訳ありません。
    先ほど、この件のエラーが解決したことを確認いたしました。
    アドバイスをありがとうございました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る