elasticsearch 如何从Amplify-AppSync-ElasticSearch-DynamoDB堆栈中获取附近看不见的文档?
问题: 使用AWS中的Amplify.js。 类似的Tinder应用程序。 在这里你可以在附近找到工作。 这些可能只会出现一次。 我们应该保存用户喜欢和不喜欢的东西 我已经做到了: 我有以下计划:elasticsearch 如何从Amplify-AppSync-ElasticSearch-DynamoDB堆栈中获取附近看不见的文档?,elasticsearch,amazon-dynamodb,aws-amplify,aws-appsync,amplifyjs,elasticsearch,Amazon Dynamodb,Aws Amplify,Aws Appsync,Amplifyjs,问题: 使用AWS中的Amplify.js。 类似的Tinder应用程序。 在这里你可以在附近找到工作。 这些可能只会出现一次。 我们应该保存用户喜欢和不喜欢的东西 我已经做到了: 我有以下计划: type Query { nearbyJobs(location: LocationInput!, km: Int): ModelJobConnection } type User @model { id: ID! name: String interacts: [Jobinte
type Query {
nearbyJobs(location: LocationInput!, km: Int): ModelJobConnection
}
type User @model {
id: ID!
name: String
interacts: [Jobinteract] @connection(name: "interactsuser")
createdAt: String
updatedAt: String
}
type Job @model @searchable {
id: ID!
name: String
location: Location
is_swiped_by: AWSJSON
interacts: [Jobinteract] @connection(name: "interactjob")
createdAt: String
updatedAt: String
}
通过@searchable,我已经建立了与ElasticSearch的连接。因为这似乎是在附近找工作的唯一方法
现在变得很棘手
现在我保存在字段中:是从用户那里看到的所有已经看到此作业的用户id。因为到目前为止大约有1000个用户,这还可以
这是我的问题:
"body": {
"size": 30,
"sort": [
{
"createdAt": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"range": {
"createdAt": {
"gte": "now-30d/d"
}
}
}
],
"must_not": {
"match_phrase": {
"is_swiped_by.user": "$ctx.identity.sub"
}
},
"filter": {
"geo_distance": {
"distance" : "${distance}km",
"location" : $util.toJson($ctx.args.location)
}
}
}
}
是否由用户刷卡
所以我查看了数组,看看用户是否在那里。
如果是-跳过
但现在我有一个问题,那就是可能会有更多的用户
这意味着,我不能再将其保存到字段中。
可能需要一张新桌子
type Jobinteract @model {
id: ID!
user: User! @connection(name: "interactsuser")
job: Job! @connection(name: "interactjob")
decision: Int
createdAt: String
updatedAt: String
}
现在的问题是。如果我现在有桌子(Jobinteract)。我应该让它也“可搜索”吗
然后我也有ElasticSearch中的数据。但是我怎样才能把它们结合在一起呢?
然后是来自不同索引的数据
我读的是《哈撒尔德的故事》。但我不明白这到底是怎么回事,如果这是正确的方法
我目前也在测试是否可以通过lambda访问ES,所以我只需要调用附近的所有作业,自己比较它们。 但这可能不是最好的选择。 从Elasticsearch附近获得100份工作,将其与下表进行比较。如果还剩50个,将其发送到前端,如果没有,则再次获取100个。
用户越喜欢,调用的时间就越长。当前@searchable指令不支持现成的自定义ElasticSearch映射,因此您需要为ElasticSearch群集执行一些自定义设置。您应该能够使用诸如hasChild之类的联接查询来查找在同一索引中没有关联子记录的所有位置,该索引指示用户以前与作业进行过交互
在撰写本文时,@searchable指令将不同的@model存储在不同的索引中,因此您需要编写一个自定义解析器来放置“交互”同一索引中的子记录,指定用户何时与作业交互,然后需要更新ES索引映射,使其使用联接数据类型,以便可以使用hasChild查询。有关更多信息,请参阅。未回答您的问题?可能与的重复不完全相同。在这个答案中,我们忽略了可能会有新用户。它不是在dynamodb中分类的。所以如果我保存了被看到的用户的数量,那么我可能有一个新的不在那里?!这不是一个重复的问题,更像是一个关于我当前堆栈的老问题。因为我必须使用elasticsearch