返回的id结果数组的elasticsearch查询不按id传入的数组排序

时间:2016-03-03 10:33:04

标签: php laravel elasticsearch elastica

我正在使用elastica,以下是我的查询:

    $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”

然而,我得到的是排序与我想要的不一样

1 个答案:

答案 0 :(得分:1)

我认为这是两个解决方案 1.如果您将id作为文档的一部分,那么您可以

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

如果没有,则需要更新类型的映射

duplicate

然后你可以使用&#34;脚本&#34;:&#34; sortOrder.indexOf(doc [&#39; _id&#39;]。value)&#34; < / p>