FOS Elastica - 获取查询的字符串表示形式

DIM*_*Sum 5 elasticsearch symfony-2.3 foselasticabundle

我正在对使用FOS Elastica的存储库进行单元测试,我想知道是否有人知道如何获取查询的字符串版本,而不是数组形式.这是我的存储库方法:

    /**
     * Creates query object by either first or last name, with given parameters
     *
     * @param $name
     *
     * @param array $params
     *
     * @return Query
     */
    public function findByFirstOrLast($name, array $params)
    {
        $queryString = new QueryString();
        $queryString->setQuery($name);
        $queryString->setFields(array('firstName', 'lastName'));


        $query = new Query();
        $query->setQuery($queryString);
        $query->setSort(array($params['sort'] => array('order' => $params['direction'])));

        return $query;
    }
Run Code Online (Sandbox Code Playgroud)

假设$name = 'foo';(我正在对id进行排序),我相信相应的FOS Elastica查询应该是

{
    "query":
    {
        "query_string":
            {
                "query":
                    "foo",
                    "fields":["firstName","lastName"]
            }
    },
    "sort":
    {
      "id":
          {
              "order":"asc"
          }
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何获得查询的这个json字符串表示?它不一定必须是这种漂亮的格式,它可以是一行字符串.

Sid*_*ity 14

我看到你不再使用它,但我最终需要同样的东西.

在返回$ query之前,您可以使用json_encode($ query-> getQuery() - > toArray()),这应该可以为您提供单线字符串所需的内容.

  • 为了使复制粘贴到ElasticSearch'head'插件更容易,请执行:print json_encode(array('query'=> $ query-> getQuery()))."\n"; (5认同)
  • 似乎我们现在必须使用$ query-> getQuery() - > toArray(),因为getQuery可以返回一个Query对象. (2认同)