带有 --query-options 抛出错误的 AWS Cloudsearch CLI

AWS Cloudsearch CLI with --query-options throwing error

我有一个通过命令行传递的查询:

aws cloudsearchdomain --endpoint-url http://myendpt search --search-query value --return _all_fields --cursor initial --size 100 --query-options {"defaultOperator":"or","fields":["id"],"operators":["and","escape","fuzzy","near","not","or","phrase","precedence","prefix","whitespace"]} --query-parser simple --query-parser simple --profile myname

它的响应是:

Unknown options: operators:[and, escape, fuzzy, near, not, or, phrase, precedence, prefix, whitespace], fields:[id]

我向您保证 id 字段存在于 AWS Cloudsearch 中。我将在线 cloudsearch 查询测试器中的查询反向工程为 AWS CLI。

请帮忙。

更新:

此问题已在更新后的 aws-cli/1.8.4 中得到解决。如果你是像我这样的 ubuntu/linux 用户:

请做:

sudo pip uninstall awscli
sudo pip install awscli
aws --version

从评论中总结 Asker 的解决方案:问题是您必须双引号 json 参数,然后是单引号 (') 或转义双引号(\") 您的参数中的 json key/values。

例如,这两个都有效

--query-options "{'defaultOperator':'and','fields':['name']}"

--query-options "{\"defaultOperator\":\"and\",\"fields\":[\"name\"]}"

我 ruby 实施 aws-sdk, ver > 2

的解决方案
  client = Aws::CloudSearchDomain::Client.new(endpoint:'http://yoururl')
  resp = client.search({
                           cursor:"initial",
                           facet:"{\"facet_name_!\":{},\"mentions\":{}}",
                           query:"#{place_a_value_here}", 
                           query_options:"{\"defaultOperator\":\"or\",\"fields\":[\"yourfield\"],\"operators\":[\"and\",\"escape\",\"fuzzy\",\"near\",\"not\",\"or\",\"phrase\",\"precedence\",\"prefix\",\"whitespace\"]}",
                           query_parser:"simple",
                           return:"_all_fields",
                           size:1000,
                           highlight:"{\"text\":{}}",
                       })