2016-10-08 19 views
0

「少/多值」 的搜索我有3場在我的文檔:在elasticsearch

  • ID
  • 標題
  • TXT

我插入了多個記錄到索引(條款)用以下代碼:

$es = Elasticsearch\ClientBuilder::create()->build(); 

$params = [ 
    'index'=>'articles', 
    'type' => 'article' 
]; 

for ($i=1; $i<50000; $i++) { 
    $params['body'] = [ 
     'id' => $i, 
     'title'=>'some title '.$i, 
     'txt'=>'some text '.$i 
    ]; 
    $response = $es->index($params); 
} 

現在我想檢索id > 20000的記錄。 如何在Elasticsearch中執行像這樣的過濾器?

回答

1

首先,你需要確保你的id字段保存爲long,你可以通過執行一個GET請求來<ES_HOST>:9200/articles/article/_mapping做到這一點,

然後你就可以運行此查詢來獲得相關的ID:

{ 
    "query": { 
     "bool": { 
      "filter": { 
       "range": { 
        "id": { 
         "gt": 20000 
        } 
       } 
      } 
     } 
    } 
}