php - 带有匹配和过滤的Elasticsearch查询

标签 php elasticsearch drupal

我有两个简单的要求。但是在一起,它不再起作用了。
我使用elasticsearch 1.4和drupal 7。

该查询有效,结果正常:

    $searchParams = [
    'body' => [
        "from"=> 0,
        "size"=> 30000,
        'query' => [
            'match'=> [
                'title' => [
                    'query' => "vivre et comprendre le cancer",
                    'operator' => "and"
                ]
            ]
        ]
    ]
];

第二个查询有效并且结果正常:
    $searchParams = [
    'body' => [
        "from"=> 0,
        "size"=> 30000,
        'query' => [
            'filtered'=> [
                'filter' => [
                    'bool' => [
                        'must' => [
                            'terms' => [
                                'field_support' => [105,106,1896,1897]
                            ]
                        ]

                    ]
                ]
            ]
        ]
    ]
];

在一起,我有一个错误:嵌套:ElasticsearchParseException [期望的字段名,但得到START_OBJECT \“filtered \”];
    $searchParams = [
    'body' => [
        "from"=> 0,
        "size"=> 30000,
        'query' => [
            'match'=> [
                'title' => [
                    'query' => "vivre et comprendre le cancer",
                    'operator' => "and"
                ]
            ],
            'filtered'=> [
                'filter' => [
                    'bool' => [
                        'must' => [
                            'terms' => [
                                'field_support' => [105,106,1896,1897]
                            ]
                        ]

                    ]
                ]
            ]
        ]
    ]
];

有人可以帮我吗?谢谢

最佳答案

您需要将match查询移到filtered > query内部

$searchParams = [
    'body' => [
        "from"=> 0,
        "size"=> 30000,
        'query' => [
            'filtered'=> [
                'query' => [
                   'match'=> [
                     'title' => [
                        'query' => "vivre et comprendre le cancer",
                        'operator' => "and"
                     ]
                   ]
                ],
                'filter' => [
                    'bool' => [
                        'must' => [
                            'terms' => [
                                'field_support' => [105,106,1896,1897]
                            ]
                        ]

                    ]
                ]
            ]
        ]
    ]
];

关于php - 带有匹配和过滤的Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849980/

相关文章:

elasticsearch - ELASTICSEARCH-自动包含日期,而没有预定义的日期字段

php - 在 Drupal Docker 容器中加载现有的 Drupal 站点

php - 排序对象数组

php - $output 是否出错

php - MySQL PHP - 无法向表插入/更新新值

elasticsearch - Elasticsearch构面过滤器

即使没有批量索引,Elasticsearch 1.5.2 2 个节点中的高 JVM 堆

javascript - 如何通过从Android应用程序发送一些数据/标志来在网站上显示声音警报

C#:Drupal 数据库访问

Drupal 8 - 以编程方式将机器名称添加为类 block