2016-03-03 99 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

你可以发布任何索引的例子吗? –