shell Couchabase分析中“从数据服务Map”功能的CURL脚本

bgtovc5b  于 2023-06-24  发布在  Shell
关注(0)|答案(1)|浏览(103)

我尝试使用CURL创建一个脚本,将bucket.scope中的所有集合从数据服务Map到本地分析服务(Couchbase)。
我在数据节点中创建了50个奇数集合,现在我需要在我的分析节点中使用它们(本地,没有远程链接)。
我想知道是否有人已经这样做了。
P.S,没有ChatGPT的答案,尝试了他们都没有工作.
已尝试CBQ命令、CLI命令和CURL命令。没有运气。
希望能达到与上述任何相同。

r8xiu3jd

r8xiu3jd1#

我不确定是否有一种方法可以用一个cURL命令来做到这一点,但是你可以用一个小的bash脚本中编排的一系列cURL命令来做到这一点,比如下面的例子:

#!/bin/bash

USERNAME=administrator
PASSWORD=password
COUCHBASE_HOST=http://127.0.0.1:8091
ANALYTICS_HOST=http://127.0.0.1:8095

BUCKET=$1
SCOPE=$2

if [ $# != 2 ]; then
  echo Usage: $0 \<bucket\> \<scope\>
  exit 1
fi

run_analytics () {
  echo Running "$*"
  curl -s -u $USERNAME:$PASSWORD $ANALYTICS_HOST/analytics/service -d statement="$*" | jq '.errors[].msg' 2>/dev/null
}

echo Mapping $BUCKET.$SCOPE in Analytics

run_analytics CREATE ANALYTICS SCOPE \`$BUCKET\`.\`$SCOPE\` IF NOT EXISTS
run_analytics DISCONNECT LINK \`$BUCKET\`.\`$SCOPE\`.Local

for collection in $(curl -s -u $USERNAME:$PASSWORD $COUCHBASE_HOST/pools/default/buckets/$BUCKET/scopes | jq -r ".scopes[] | select(.name == \"$SCOPE\") | .collections[].name"); do
  run_analytics ALTER COLLECTION \`$BUCKET\`.\`$SCOPE\`.\`$collection\` ENABLE ANALYTICS
done

run_analytics CONNECT LINK \`$BUCKET\`.\`$SCOPE\`.Local

请注意,没有错误处理,处理需要URL编码的时髦桶字符等。但希望这能帮上忙

相关问题