php - Elasticsearch范围过滤器不起作用(未注册过滤器)

标签 php elasticsearch

我正在尝试在搜索中添加范围过滤器(仅出现工作流程状态<= 5的文章),并且出现错误
我的范围怎么了?

    $searchParams = array(
        'index' => $config->search->index,
        'type' => 'xxxxxxxxxx',
        'size' => 10,
        'from' => ($page - 1) * 10,
        'body' => array(
            'query' => array(
                'filtered' => array(
                    'query' => array(
                        'multi_match' => array(
                            'query' => $query,
                            'fields' => array('title^8', 'caption^5', 'teasertext^4', 'articletext^2') // ^x = Gewichtung des Felds
                        ),
                    ),
                    'filter' => array(
                        'bool' => array(
                            'must' => array(
                                'term' => array(
                                    'deleted' => 0,
                                    'visible' => 1
                                ),
                                'range' => array(
                                    'workflow_status' => array('lte' => '5')
                                )
                            )
                        )
                    )
                )
            )
        ),
        'sort' => array('_score', '_id:desc')

这是我的状态映射:
"workflow_status": {
                    "type":  "integer",
                    "index": "not_analyzed"
                }

最佳答案

您没有有效的查询DSL,必须将其放入一个数组。
body 应该在以下几条线上:

body =>
    array(
        'query' => array(
        'filtered' => array(
            'query' => array(
                'multi_match' => array(
                    'query' => $query,
                    'fields' => array('title^8', 'caption^5', 'teasertext^4', 'articletext^2') // ^x = Gewichtung des Felds
                ),
            ),
            'filter' => array(
                'bool' => array(
                    'must' => array(
                        array(
                            'term' => array(
                                'deleted' => 0
                            )
                        ),
                        array('term' => array(
                            'visible' => 1
                            )
                        ),
                        array(
                            'range' => array(
                                'workflow_status' => array('lte' => '5')
                            )
                        )
                    )

关于php - Elasticsearch范围过滤器不起作用(未注册过滤器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076595/

相关文章:

javascript - 状态的多选列表框不显示另一个列表框中的所有城市(Php,mysql,ajax)

javascript - 提交表格并在不同的页面上阅读

elasticsearch - 需要通过URI示例进行Elasticsearch多索引搜索

elasticsearch - Logstash - 在 mutate 中找到拆分结果的长度

elasticsearch - 我应该使用数据库 ID 作为弹性 ID

java - 使用 java 客户端 6.5 插入对象

php - 拆分此 sql 查询,以便它可以像在工作台上一样在 php 上运行

php - 将 postman 多级数组插入数据库

php - MPDF 缩放因子在创建 PDF 时给字体大小带来问题

elasticsearch - 您可以在Elasticsearch过滤器中引用其他查询吗?