2016-03-03 130 views
1

我使用的彈性彎曲及以下是我的查詢:elasticsearch查詢傳遞

$query = new Query(); 

    $query->setSize(5); 

    $qb = new \Elastica\Query\Ids(); 

    $qb->addId("id_5"); 
    $qb->addId("id_3"); 
    $qb->addId("id_4"); 
    $qb->addId("id_1"); 
    $qb->addId("id_2"); 

    return $query->setQuery($qb) 

我想在同一順序的結果回報我通過在例如,在這種情況下,這將是「ID_5,ID_3,ID_4,ID_1,ID_2」

但是我所得到的排序是不一樣的東西,我想

+0

您是否將id作爲文檔的一部分? –

回答

1

我認爲這是兩個解決方案 1.如果你有我d作爲文檔的一部分,然後如果沒有,那麼你需要爲你的類型更新映射是

{ 
    "mappings": { 
    "YOUR_TYPE": { 
     "_id": { 
     "index": "not_analyzed" 
     } 
    } 
    } 
} 

然後你可以使用「腳本」,你可以做

POST indexName/_search 
{ 
    "sort": [ 
    { 
     "_script": { 
     "type": "number", 
     "script": "sortOrder.indexOf(doc['Id'].value)", 
     "params": { 
      "sortOrder": [ 
      "AVMX9sHTyNVr4SjF3oRt", 
      "AVMTc1fSyNVr4SjF3WpF", 
      "AVMYuGLOyNVr4SjF3rKm" 
      ] 
     }, 
     "order": "asc" 
     } 
    } 
    ], 
    "query": { 
    "ids": { 
     "values": [ 
     "AVMX9sHTyNVr4SjF3oRt", 
      "AVMTc1fSyNVr4SjF3WpF", 
      "AVMYuGLOyNVr4SjF3rKm" 
     ] 
    } 
    } 
} 

:「sortOrder.indexOf( doc ['_ id']。value)「

+0

我如何用elastica做到這一點? – MinFu

+0

我有這個錯誤無法運行內聯腳本[sortOrder.indexOf(doc [「Id」]。價值)]使用郎[groovy] – MinFu

+0

你可以發佈任何索引的例子嗎? –