【问题标题】:multiple query return error why?多个查询返回错误为什么?
【发布时间】:2015-11-26 16:11:02
【问题描述】:

我想根据源进行查询,所以我将代码放在我的基本查询中,它应该始终根据源进行查询,其中源值存储在变量 $webAddress 中。

如果没有选择任何内容,它应该运行默认查询,但它总是返回一个奇怪的错误!

错误信息---

所以为什么我会收到这个错误,任何人都知道如何解决这个奇怪的问题!

非常感谢。

  1. 在 AbstractJsonSerializer ::jsonDecode ('{"took":291,"timed_out":false,"_shards":{"total":2,"successful":2,"failed":0}, “点击”:{“总”:10,“max_score”:0.94276774,“点击”:[{“_index”:“myIndex”,“_type”:“myType”,“_id”:“p717ff3c9460bf8a52407d6e4a63f239dbeb052cf”,“_score” :0.94276774,"_source":{ "content": "美丽的后院已成为郊区身份的象征 很像车道上的一辆新车。升级你的户外 空间不仅提升了......}中 供应商/elasticsearch/elasticsearch/src/Elasticsearch/Serializers/SmartSerializer.php 在第 39 行 +

  2. 在 SmartSerializer ->反序列化 ('{"took":291,"timed_out":false,"_shards":{"total":2,"successful":2,"failed":0},"hits" :{"total":10,"max_score":0.94276774,"hits":[{"_index":"myIndex","_type":"myType","_id":"p717ff3c9460bf8a52407d6e4a63f239dbeb052cf","_score":0.94276774, “_资源”:{ "content": "一个美女....}

    4.at Transport ->performRequest('GET', '/myType/content/_search', array('size' => '30'), array('query' => array('bool' =>数组('必须' => array(array('query_string' => array('default_field' => 'source', 'query' => 'aa.com', 'bb.com', 'cc.com'))))), '排序' => 数组()))在 供应商/elasticsearch/elasticsearch/src/Elasticsearch/Endpoints/AbstractEndpoint.php 在第 86 行 +

  3. 在 AbstractEndpoint ->在 vendor/elasticsearch/elasticsearch/src/Elasticsearch/Client.php 中执行请求() 第 1012 行 +

如果我打印正在执行的查询,我会得到 ---

{
    "index": "myIndex",
    "type": "myType",
    "size": 30,
    "body": {
        "query": {
            "bool": {
                "must": [
                    {
                        "query_string": {
                            "default_field": "source",
                            "query": "aa.com, bb.com, cc.com"
                        }
                    }
                ]
            }
        },
        "sort": []
    } }

【问题讨论】:

    标签: php elasticsearch


    【解决方案1】:

    在您的 PHP 代码中,您插入了两次 query/bool/must 组合。只需删除第一个就可以了。

        $params = array(
            'index' => "myIndex",
            'type' => "myType",
            'xize' => 100,
            'body' => array(
                'query' => array(
                    'bool' => array(
                        'must' => array(
    
                        )
                    )
                ),
                'sort' => array()
            )
        );
    
        $params['body']['query']['bool']['must'][] = array(
            'query_string' => array(
                'default_field' => 'source',
                'query' => implode(', ', array_column($webAddress, 'source'))
            )
        ):
    

    【讨论】:

    • 嗨,谢谢您的回答 :),但我这样做是错误的 --- 语法错误 500 内部服务器错误 - JsonDeserializationError
    • 奇怪,您能否确保您的数组正确嵌套,并且您可以使用格式正确的代码更新您的问题,这样会更容易阅读(和调试)。谢谢
    • 我已经更新了我的问题,你可以看看:)
    • 实际上,我已经更新了我的答案以更好地反映您想要做什么。请重试。
    • 非常感谢您的回答,但不知何故,我总是遇到这个错误,我再次更新了我的问题以更清楚地解释它......
    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多