doulang2311
2015-06-26 15:08
浏览 21
已采纳

Elasticsearch范围过滤器无法正常工作(未注册过滤器)

I'm trying ta add a range filter to my search (only articles with workflow status <= 5 should appear) and getting errors
what's wrong with my range?

    $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')

here my mapping for status:

"workflow_status": {
                    "type":  "integer",
                    "index": "not_analyzed"
                }
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • douba3943 2015-06-26 19:32
    最佳回答

    What you have is not a valid Query DSL , must should take in an array. The body should be something on these lines :

    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')
                                )
                            )
                        )
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题