【问题标题】:Search in ElasticSearch在 ElasticSearch 中搜索
【发布时间】:2017-07-02 12:34:53
【问题描述】:

我在弹性搜索中遇到问题。在控制台 Kibana 中,我正在执行这段代码,

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

但答案是,

我把代码改成,

$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
    ];

但答案还是一样的。我不明白是什么问题。请帮我。

【问题讨论】:

标签: php search elasticsearch laravel-5.3


【解决方案1】:

为什么要在 0 上指定大小?它应该有一些价值。而且您的聚合还可以包含可能的大小(每个聚合应该采用最大可能的选项)。工作查询的一些示例:

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

【讨论】:

  • 我将代码更改为{ "query": { "match": { "body" :{ "date_added": "2017-02-08" }} }, "from" : 0, "size": 10, "aggs": { "date_added": { "terms": { "field": "bounce_type.keyword", "size":25 } } } }。但是又出现了一个错误。 'parsing_exception: [match] 查询不支持 [date_added]'
  • @Avishake "body" 是我的示例字段名称,在您的情况下,使用 "date_added" 而不是 "body"
猜你喜欢
  • 1970-01-01
  • 2022-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2020-09-12
  • 2015-11-23
  • 1970-01-01
相关资源
最近更新 更多