Json 使用bash脚本超过硬盘大小时自动触发Elasticsearch索引
我是bash脚本的新手,我想在elasticsearch中自动删除旧保存的记录。我可以使用curl命令手动执行此操作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": {
" 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
}
}
}
}'"'"