Search code examples
phpelasticsearchrangequery-stringelasticsearch-dsl

use query_string and range in elasticsearch php client [query_string] malformed query, expected [END_OBJECT] but found [FIELD_NAME]


i use below code and get below error for connect php to elasticsearch i use elasticsearch php client

    $params = [
    'index'=>'index1,index2',
    'from'=>$startfrom,
    'size'=>$maxperpage,
    'sort'  => array('id:desc'),
    'body'  => [
        'query' => [
            'query_string' => [
                'query' => "\"$search_text\""
            ]
        ]
    ],
];

if($limit_time['start']){
    $params['body']['query']['range']['date_insert']['gte']=$limit_time['start'];
}
if($limit_time['end']){
    $params['body']['query']['range']['date_insert']['lte']=$limit_time['end'];
}

error :

{"error":{"root_cause":[{"type":"parsing_exception","reason":"[query_string] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":104}],"type":"parsing_exception","reason":"[query_string] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":104},"status":400}

Solution

  • i solved problem but thanks a lot "Val" for your help

    i use below code :

        $params = [
        'index'=>'index1,index2',
        'from'=>$startfrom,
        'size'=>$maxperpage,
        'sort'  => array('id:desc')
    ];
    
    if($search_text){
        $params['body']['query']['bool']['must'][0]['match_phrase']['src']=$search_text;
    }
    
    if($use_time_status){
        if($limit_time['start']){
            $params['body']['query']['bool']['must'][1]['range']['date_insert']['gte']=$limit_time['start'];
        }
        if($limit_time['end']){
            $params['body']['query']['bool']['must'][1]['range']['date_insert']['lte']=$limit_time['end'];
        }
    }