Я создаю 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")
}
Запрос с широтой, долготой и расстоянием для поиска «сообщений» должен возвращать допустимые результаты.





Краткий ответ на это - нет.
Аннотации @searchable и функции AppSyncs в ES очень ограничены из коробки. Вы даже не можете пройти в fuzzy_matches.
Думаю, лучше всего реализовать это самостоятельно. Вы можете изменить преобразователи и, таким образом, также изменить поисковый запрос ES. Однако резолверы написаны на VST. В чем, возможно, не так-то просто покопаться.
Это изменилось? При создании среды prod из dev ни один из индексов не создавался на ES. Не знаю, что делать.