2016-02-04 3 views
2

Пожалуйста, помогите мне. Я использую php 5.5 и Elasticsearch 2.1. Я хочу сделать ранжирование среди истории. Но мой фильтр даты работает неправильно.Elasticsearch Php Отображение, фильтрация и поиск

Я получаю точные результаты, когда делал запрос только между датами. Однако, я не получаю точных результатов, когда делал запрос с указанием даты, дня и часа.

Например:

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017/12/3123:59:59&my_date_gte=2016/01/0100:00:00

Результат не является правильным.

Пример 2:

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017&my_date_gte=2016

Результат является правильным.

Мой картирование:

$myTypeMapping['properties']['my_date']['type']='date';  
$myTypeMapping['properties']['my_date']['index']='not_analyzed';  
$myTypeMapping['properties']['my_date']['format']='yyyy/MM/dd HH:mm:ss'; 

Мой фильтр:

unset($filter_my_date);  

if(isset($_GET[my_date_try])){  
    $filter_my_date['range']['my_date']['lte']=$_GET['my_date_lte'];  
    $filter_my_date['range']['my_date']['gte']=$_GET['my_date_gte'];  
    $filter_my_date['range']['my_date']['format']='yyyy/MM/dd HH:mm:ss'; 
} 

if(is_array($filter_my_date)){  
     $searchParams['body']['query']['bool']['must']=$filter_my_date;  
} 

В чем проблема?

ответ

0

Ваша строка формата имеет место между днем ​​и час, ваш пример URL не имеет:

$myTypeMapping['properties']['my_date']['format']='yyyy/MM/dd HH:mm:ss'; 
                  ^

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017/12/3123:59:59&my_date_gte=2016/01/0100:00:00 
                   ^       ^
0

Я установил его:

пример 1:

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017/12/31 23:59 : 59 & my_date_gte = 2016/01/01 00:00:00

пример 2:

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017&my_date_gte=2016

Пример 3: Также я написал только дату без времени:

http://10.0.2.15:8080/filter.php?my_date_try&my_date_lte=2017/12/31 & my_date_gte = 2016/01/01

Второй пример, в результат правильный, но другие ошибочны