有没有办法通过放大GraphQL transform @searchable注释来控制自动生成的弹性搜索索引?

时间:2018-12-29 21:01:17

标签: annotations graphql geospatial aws-amplify aws-elasticsearch

我正在使用架构和注释构建一个graphQL api,以使用AWS Amplify的GraphQL转换。我如何控制它在后台产生什么样的ES索引?

这是一个简单的API,可根据“距当前位置半径5公里”,时间戳和其他关键字来提供搜索功能。关键字搜索绝对可以,但地理空间搜索效果不佳。根据我的研究,在进行地理空间搜索时,需要在ES中使用一种特定类型的架构。这是我的架构:

type User @model {
  id: ID!
  deviceID: [String!]
  posts: [Post] @connection(name: "UserPosts")
  comments: [Comment] @connection(name: "UserComments")
}

type Post @model @searchable {
  id: ID!
  items: String!
  latitude: Float
  longitude: Float
  user: User @connection(name: "UserPosts")
  comments: [Comment] @connection(name: "PostComments")
}

type Comment @model {
  id: ID!
  content: String
  timestamp: AWSDateTime
  location: String
  post: Post @connection(name: "PostComments")
  user: User @connection(name: "UserComments")
}

包含纬度,经度和距离的查询以查找“帖子”应返回有效结果。

1 个答案:

答案 0 :(得分:0)

简短的回答是

ES内的@searchable批注和AppSyncs功能超级有限。您甚至无法传递Fuzzy_matches。

我猜要走的路是自己实现它。您可以修改解析器,从而也可以修改ES搜索查询。但是,解析器是用VST编写的。可能不是那么容易挖掘。