Как индексировать данные из Firebase Firestore в эластичный поиск приложений с помощью облачной функции?
У меня есть данные, созданные пользователем в firestore. для функции полнотекстового поиска я пытаюсь использовать эластичный поиск приложений. Я хочу развернуть облачную функцию, поэтому всякий раз, когда документ записывается в firestore, необходимо запускать функцию, после чего функция будет индексировать документ.
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const axios = require("axios");
admin.initializeApp(functions.config().firebase);
exports.createBPS = functions.firestore
.document("MyCollection/{docId}")
.onWrite((snap, context) => {
axios.post(
"https://myapp.ent.us-west1.gcp.cloud.es.io/api/as/v1/engines/myengine/documents?auth_token=private-aadsafdsfadsfdsafdafd",
snap.after.data()
);
});
Любая помощь будет оценена по достоинству. Я разрабатываю мобильное приложение, используя следующий поиск эластичных приложений Flutter Firebase
Образец документа в firestore {"id": "1234566", "name": "Мое имя", "description": "Мое описание" и т. Д.}
2 ответа
Я бы рекомендовал использовать официальный ES SDK. Это сделало бы ваш код более стабильным и более легким для чтения.
Вы можете увидеть руководство ниже на странице расширения вашей firebase.
(Необязательно) Заполнить или импортировать существующие документы. Это расширение отправляет только содержимое измененных документов — оно не экспортирует полный набор данных существующих документов в Поиск приложений. Таким образом, чтобы заполнить ваш набор данных всеми документами в вашей коллекции, вы можете запустить скрипт импорта, предоставляемый этим расширением.
Перед запуском скрипта сначала следуйте инструкциям здесь, чтобы «Создать файл закрытого ключа для вашей учетной записи службы». Загрузите его и сохраните где-нибудь как serviceAccountKey.json.
GOOGLE_APPLICATION_CREDENTIALS= /path/to/your/serviceAccountKey.json \
COLLECTION_PATH=TodoItem \
INDEXED_FIELDS=content,isPublic, writerID \
ENTERPRISE_SEARCH_URL=https://todomateelastic.ent.us-central1.gcp.cloud.es.io \
APP_SEARCH_API_KEY= { your private app search API key here } \
APP_SEARCH_ENGINE_NAME=todomatecontent \
npx @elastic/app-search-firestore-extension import