Есть ли способ управления автоматически сгенерированным индексом эластичного поиска с помощью амплификации GraphQL transform @searchable? - PullRequest
0 голосов
/ 30 декабря 2018

Я строю API GraphQL со схемой и аннотациями, чтобы использовать преобразование GraphQL AWS Amplify.Как я могу контролировать, какой индекс 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 голосов
/ 12 февраля 2019

Короткий ответ на этот вопрос: нет .

Функции @searchable для аннотаций и AppSyncs в ES очень ограничены.Вы даже не можете передать fuzzy_matches.

Полагаю, вам нужно реализовать это самостоятельно.Вы можете изменить распознаватели и, таким образом, изменить поисковый запрос ES.Однако распознаватели написаны на VST.Который может быть не так легко копать.

...