gpt4 book ai didi

php - 通过返回的id结果数组的elasticsearch查询未按传入的id数组排序

转载 作者:行者123 更新时间:2023-12-02 23:31:39 26 4
gpt4 key购买 nike

我正在使用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.如果您将ID作为文档的一部分,则可以

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

如果不是,那么您需要更新映射以使类型为
{
"mappings": {
"YOUR_TYPE": {
"_id": {
"index": "not_analyzed"
}
}
}
}

然后,您可以使用 “script”:“sortOrder.indexOf(doc ['_ id']。value)”

关于php - 通过返回的id结果数组的elasticsearch查询未按传入的id数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com