gpt4 book ai didi

elasticsearch - 将用户数据与ElasticSearch混合

转载 作者:行者123 更新时间:2023-12-03 01:25:38 24 4
gpt4 key购买 nike

我正在使用ElasticSearch来存储列表。用户可以按多个字段(例如,grossReturn,purchasePrice)等进行排序。

现在,我们要提供一个选项,使用户可以存储收藏夹列表。

正在将收藏夹存储在PostgresSQL中。然后,在每个请求之前,我都会从Postgres获取收藏夹-将它们放入数组中并具有如下脚本字段:

const scripts = {
favorite: {
script: {
source: 'return params.favorites.contains(params._source.id) ? 1 : 0',
params: {
favorites,
},
},
},
};

现在我也想按此字段排序,这就是问题所在:
const getSortParams = (sortBy, scripts) => {
const sort = {};

if (sortBy) {
const fieldName = sortBy.split(',')[0];
const sortOrder = sortBy.split(',')[1];
if (fieldName === 'favorite') {
sort._script = {
type: 'number',
script: scripts[fieldName].script,
order: sortOrder,
};
} else {
sort[fieldName] = {
order: sortOrder,
};
}
}
return sort;
};

这非常非常慢-排序大约需要3秒钟。这是有道理的,因为需要计算所有内容。

我的问题是->还有什么更好的方法?

最佳答案

将一个属性添加到您的列表定义类中,以指示它是否是收藏夹(true,false)。
由于它是基于每个用户的,因此可以为您的用户模型添加一个数组属性,该属性将存储一组喜欢的列表ID。

关于elasticsearch - 将用户数据与ElasticSearch混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58356314/

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