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')
                                )
                            )
                        )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器