2017-02-14 18 views
1

У меня проблема в поиске elastics. В консоли Kibana, я выполняю этот код,Поиск в ElasticSearch

GET bounce_gmd/_search 
{ 
"query": { "match_phrase": { "date_added": "2017-02-08" } }, 
    "size": 0, 
    "aggs": { 
    "date_added": { 
    "terms": { 
     "field": "bounce_type.keyword" 
     } 
    } 
    } 
} 

И у меня есть этот результат.

{ 
"took": 1, 
"timed_out": false, 
"_shards": { 
"total": 5, 
"successful": 5, 
"failed": 0 
}, 
"hits": { 
"total": 129812, 
"max_score": 0, 
"hits": [] 
}, 
........................... and many more lines. 

Но когда я бегу от моего проекта laravel, у меня нет этого результата. Мой PHP код выглядит так,

$params['index'] = $index_name; 
$params['type'] = $index_name; 
$params['body'] = $json; 
$params['body']['query']['match_phrase']['date_added'] = $now_time; 
$params['body']['size']=0; 
$params['body']['aggs']['bounce_type']['terms']['field']='bounce_type.keyword'; 
$response = $client->search($params); 

Здесь $ index_name = 'bounce_gmd' и $ now_time = "2017-02-08".

Но ответ,

Answer

изменить код на,

$json='{ 
"query": { "match_phrase": { "date_added": "2017-02-08" } }, 
    "size": 0, 
    "aggs": { 
    "date_added": { 
     "terms": { 
     "field": "bounce_type.keyword" 
     } 
     } 
    } 
    } 
    '; 
$params = [ 
     'index' => $index_name, 
     'type' => $index_name, 
     'body' => $json 
    ]; 

Но все-таки ответ то же самое. Я не понял, в чем проблема. Пожалуйста, помогите мне.

+0

Вы можете распечатать запрос, сделанный вашим php-кодом? –

+0

Как вы хотите получить запрос в форме sql? Я пробую запрос с этой страницы. https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_search_operations.html – Avishake

ответ

0

Почему вы указываете размер на 0? Это должно иметь определенную ценность. А ваши агрегаты также могут содержать возможный размер (он должен принимать максимально возможные варианты для каждого aggs). Пример рабочего запроса:

{ 
    "from" : 0, 
    "size" : 10, 
    "query" : { 
    "match" : { 
     "body": 
     { 
     "query":"press key handler ", 
     "operator":"or", 
     "analyzer":"english" 
     } 
     } 
    }, 
    "aggs" : { 
    "category_aggs" : { "terms" : { "field": "category", "size":25}}, 
    "year_aggs" : { "terms" : { "field": "year", "size":30}}, 
    "post_type_aggs" : { "terms" : { "field": "post_type", "size":2}} 
    } 
} 
+0

Я меняю код на '{ " query ": {" match ": {" body " : { "DATE_ADDED": "2017-02-08"}}}, "от": 0, "размер" : 10, "Aggs": { "DATE_ADDED": { "терминов": { "поле": "bounce_type.keyword", \t \t "размер": 25 } }} } '. Но появилась еще одна ошибка. 'parsing_exception: запрос [match] не поддерживает [date_added]' – Avishake

+0

@Avishake «body» - это мое имя поля примера, в вашем случае вместо «body» используйте «date_added», – jgr