elasticsearch,Json,Linux,Bash,Curl,elasticsearch" /> elasticsearch,Json,Linux,Bash,Curl,elasticsearch" />

Json 使用bash脚本超过硬盘大小时自动触发Elasticsearch索引

Json 使用bash脚本超过硬盘大小时自动触发Elasticsearch索引,json,linux,bash,curl,elasticsearch,Json,Linux,Bash,Curl,elasticsearch,我是bash脚本的新手,我想在elasticsearch中自动删除旧保存的记录。我可以使用curl命令手动执行此操作 " curl -XDELETE 'index name/_query' -d ' { "query": { "range": { "eventType_timestamp": {

我是bash脚本的新手,我想在elasticsearch中自动删除旧保存的记录。我可以使用curl命令手动执行此操作

   " curl -XDELETE 'index name/_query' -d '
    {
      "query": 
      {
        "range": 
                    {
          "eventType_timestamp": 
                      { 
                      "gte": "2016-05-30T07:00:00.000Z",
                      "lte": "2016-06-15T06:59:59.999Z"
          }
        }
      }
    }'
我希望通过shell脚本自动解析日期,而不是手动传递日期。我检索了日期并存储在一个字段中,当我将这些字段传递到脚本中时,我遇到了一些错误

   " curl -XDELETE 'index name/_query' -d '
    {
      "query": 
      {
        "range": 
                    {
          "eventType_timestamp": 
                      { 
                      "gte": $from_dataset_date,
                      "lte": $to_dataset_date
          }
        }
      }
    }'"
错误:这是我在运行上述卷曲时遇到的错误

{"error":{"root_cause":[{"type":"jsonparse_exception","reason":"jsonparse_exception: Unrecognized token '$fromdatasetdate': was expecting ('true', 'false' or 'null')\n at [Source: [B@ba52ee7; line: 9, column: 33]"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"","node":"-oHm1uxQQ6e7RTnCaWtQEw","reason":{"type":"query_parsing_exception","reason":"Failed to parse","index":"-dd.","caused_by":{"type":"json_parse_exception","reason":"json_parse_exception: Unrecognized token '$from_dataset_date': was expecting ('true', 'false' or 'null')\n at [Source: [B@ba52ee7; line: 9, column: 33]"}}}]},"status":400}

似乎这是一个问题与引用-组合单引号,双引号和转义。Curl发送json数据。Bash变量应该是双引号,但json数据应该以单引号开头

例如:

data="'"'{"json": "finish string after single quote ->", '"\"$BASH_VAR\""',"json1": "finish data"}'"'"
在上面的示例中,我使用了单引号和双引号连接字符串(
“'{..'
用于
'
添加到
{..

在bash脚本中尝试类似的操作

curl -XDELETE 'index name/_query' -d "'"'
    {
      "query": 
      {
        "range": 
                    {
          "eventType_timestamp": 
                      { 
                      "gte": '"\"$from_dataset_date\""',
                      "lte": $to_dataset_date
          }
        }
      }
    }'"'"