elasticsearch - FOS Elastica——获取查询的字符串表示

标签 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;
    }

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

{
    "query":
    {
        "query_string":
            {
                "query":
                    "foo",
                    "fields":["firstName","lastName"]
            }
    },
    "sort":
    {
      "id":
          {
              "order":"asc"
          }
    }
}

有谁知道如何获取查询的 json 字符串表示形式?它也不一定必须采用这种漂亮的格式,它可以是单行字符串。

最佳答案

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

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

关于elasticsearch - FOS Elastica——获取查询的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21999419/

相关文章:

ElasticSearch RoutingMissingException

elasticsearch - Elasticsearch过滤的 bool 查询

elasticsearch - 使用http_poll,logstash不会在kibana dahboard中创建索引模式。错误-LogStash::ConfigurationError“,:message =>”预期为#,

solr - 使用 Lucene、Solr 或 elasticsearch 索引 Amazon S3、Rackspace Cloud Files 或 OpenStack SWIFT

node.js - Node.js环境下mongodb与elasticsearch的集成

forms - Symfony2 表单生成器在带有元数据的连接表中选择

java - 转储 assetic 时找不到/usr/bin/java

elasticsearch - [index] 中 VALUE_STRING 的未知键

java - hibernate 搜索 : concurrent timeout exception

symfony - 将验证组设置为 symfony 2 中的嵌入表单