elasticsearch 如何使用shell脚本将当前日期传递给curl查询?

cngwdvgl  于 7个月前  发布在  ElasticSearch
关注(0)|答案(3)|浏览(71)

我正在使用CURL将数据插入到ElasticSearch中,当我插入固定数据时,它工作得很好。我正在尝试获取当前DateTime并分配给一个变量并与我要插入的对象一起使用。
这是我的剧本,

while true;
do

echo $i

number=$RANDOM;
let "number %= 9";
let "number = number + 1";
range=10;
for i in {1..18}; do
  r=$RANDOM;
  let "r %= $range";
  number="$number""$r";
done;

curl -XPUT 'http://localhost:9200/nondomain_order/orders/'+$number+'' -d '{
  "CustType": null,
  "tag": "OrderType:Postpaid",
  "GUDeviceID": "0",
  "IsAvailable": false,
  "GUOrderID": "123",
  "OrderID": "3",
  "OrderDate": "2015-01-06T15:23:42.7198285+05:30",
  "GUAccountID": "15010615234251403",
  "CreateUser": "admin",
  "CreateDate": "2015-01-01T15:23:42",
  "CancelledDate": "1899-01-01T00:00:00",
  "CancelledUser": null,
  "GUTranID": "15010615234271604",
  "TenentID": 39,
  "CompanyID": 42,
  "ViewObjectID": 0,
  "ObjectID": null,
  "Status": 2,
  "OrderDetails": [
    {
      "GUPromtionID": "15010519341113508",
      "GUOrderID": "15010615234271703",
      "ChangeID": 0,
      "GUPackageID": "14100112243589402",
      "startdate": "2015-01-06T00:00:00" 
    }
]

字符串
我需要获取当前的DateTime并将其分配给指定日期。如何才能做到这一点?

q3qa4bjr

q3qa4bjr1#

在你的弦里,改变

"CreateDate": "2015-01-01T15:23:42",

字符串

"CreateDate": "'"$(date +%Y-%m-%dT%H:%M:%S)"'",


在这里,我终止了'字符串,并启动了一个"字符串,其中包含$(date)。否则,它不会被执行,而是作为字符串传递给curl
你也可以事先将它赋给一个变量,然后像这样使用它:

now=$(date +%Y-%m-%dT%H:%M:%S)

...

"CreateDate": "'"$now"'",

其他问题

变化

curl -XPUT 'http://localhost:9200/nondomain_order/orders/'+$number+'' -d '{


curl -XPUT 'http://localhost:9200/nondomain_order/orders/'"$number" -d '{


Bash连接只是两个字符串一个接一个,它们之间没有空格。否则,它将查询像http://localhost:9200/nondomain_order/orders/+0123456789+而不是http://localhost:9200/nondomain_order/orders/0123456789这样的URL。
(Here,我用双引号保护number变量不被扩展,以防它发生变化)

chhkpiq4

chhkpiq42#

与其在引号中使用引号,我建议使用here-doc来摆脱所有神奇的引号。像这样使用curl

number=10
dt="$(date --iso-8601=seconds)"

curl -XPUT 'http://localhost:9200/nondomain_order/orders/'$number -d@- <<EOF
{
  "CustType": null,
  "tag": "OrderType:Postpaid",
  "GUDeviceID": "0",
  "IsAvailable": false,
  "GUOrderID": "123",
  "OrderID": "3",
  "OrderDate": "2015-01-06T15:23:42.7198285+05:30",
  "GUAccountID": "15010615234251403",
  "CreateUser": "admin",
  "CreateDate": "$dt",
  "CancelledDate": "1899-01-01T00:00:00",
  "CancelledUser": null,
  "GUTranID": "15010615234271604",
  "TenentID": 39,
  "CompanyID": 42,
  "ViewObjectID": 0,
  "ObjectID": null,
  "Status": 2,
  "OrderDetails": [
    {
      "GUPromtionID": "15010519341113508",
      "GUOrderID": "15010615234271703",
      "ChangeID": 0,
      "GUPackageID": "14100112243589402",
      "startdate": "2015-01-06T00:00:00"
    }
  ]
}
EOF

字符串

pkln4tw6

pkln4tw63#

你可以这样做:

DATE_ISO=$(date +"%Y-%m-%dT%H:%M:%S")
...
curl -XPUT 'http://localhost:9200/nondomain_order/orders/'+$number+'' -d '{
...
   "CreateDate": "'"$DATE_ISO"'",
...
}'

字符串

相关问题