简体   繁体   中英

Elasticsearch range filter not working (No filter registered for)

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"
                }

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM