【问题标题】:Elasticsearch query does not take variable?Elasticsearch 查询不带变量?
【发布时间】:2015-08-11 23:57:21
【问题描述】:

动态值或变量在 elasticsearch“范围”查询中不起作用。

为了解释更多,这是一个弹性搜索范围查询,它找到从 1000 到 11100 的 productId,它工作得很好 ---

$json = '{
   "query" : {
       "range" : {
           "productId" : {
               "from" : '1000',
               "to" : '11100'
           }
       }
   }
}';

另一方面,对具有相同值的变量使用相同的查询会返回错误,例如 ---

{"error":"SearchPhaseExecutionException[执行阶段[查询]失败,所有分片失败;shardFailures

$a =1000;
$b = 11100;

$json = '{
       "query" : {
           "range" : {
               "productId" : {
                   "from" : '$a',
                   "to" : '$b'
               }
           }
       }
    }';

有谁知道我在哪里犯了错误。

任何建议都会有很大帮助。提前致谢。

【问题讨论】:

  • 当您删除 $a 和 $b 周围的引号时发生了什么(例如:“from” : $a 而不是“from” : '$a')
  • @vincent 它也返回同样的错误,我已经尝试过很多方法——$a 和 '.$a.'
  • 你能粘贴完整的错误吗?

标签: elasticsearch


【解决方案1】:

如果这是PHP,则字符串连接有问题:

$a = 1000;
$b = 11100;

$json = '{
   "query" : {
       "range" : {
           "productId" : {
               "from" : '.$a.',
               "to" : '.$b.'
           }
       }
   }
}';

查看变量周围的点。

如果你自己运行原始代码,PHP 解析器应该会给你一个解析错误。

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多