Запрос Firestore.
Этапы запроса выполняются в следующем порядке: 1. из 2. где 3. выберите 4. orderBy + startAt + endAt 5. смещение 6. предел
JSON-представление |
---|
{ "select": { object ( |
Поля | |
---|---|
select | Необязательный подмножество возвращаемых полей. Это действует как |
from[] | Коллекции для запроса. |
where | Фильтр, который нужно применить. |
orderBy[] | Порядок применения к результатам запроса. Firestore позволяет вызывающим абонентам обеспечить полный или частичный порядок или вообще не упорядочивать. Во всех случаях Firestore гарантирует стабильный заказ, соблюдая следующие правила:
Поля добавляются в том же направлении сортировки, что и последний указанный порядок, или по возрастанию, если порядок не был указан. Например:
|
startAt | Потенциальный префикс позиции в наборе результатов, с которой начинается запрос. Порядок набора результатов основан на предложении
Результаты этого запроса упорядочены по Курсоры могут ссылаться либо на полный порядок, либо на префикс местоположения, однако они не могут ссылаться на большее количество полей, чем указано в предоставленном Продолжая приведенный выше пример, добавление следующих начальных курсоров будет иметь различный эффект:
В отличие от Требует:
|
endAt | Потенциальный префикс позиции в наборе результатов, на которой завершается запрос. Это похоже на Требует:
|
offset | Количество документов, которые необходимо пропустить перед возвратом первого результата. Это применяется после ограничений, указанных в Требует:
|
limit | Максимальное количество возвращаемых результатов. Применяется после всех остальных ограничений. Требует:
|
findNearest | Необязательный. Поиск потенциальных ближайших соседей. Применяется после всех остальных фильтров и упорядочения. Находит ближайшие векторные внедрения к заданному вектору запроса. |
Проекция
Проекция возвращаемых полей документа.
JSON-представление |
---|
{
"fields": [
{
object ( |
Поля | |
---|---|
fields[] | Поля для возврата. Если пусто, возвращаются все поля. Чтобы вернуть только имя документа, используйте |
Селектор коллекций
Выбор коллекции, например messages as m1
.
JSON-представление |
---|
{ "collectionId": string, "allDescendants": boolean } |
Поля | |
---|---|
collectionId | Идентификатор коллекции. Если установлено, выбираются только коллекции с этим идентификатором. |
allDescendants | Если установлено значение false, выбираются только коллекции, которые являются непосредственными дочерними элементами |
Фильтр
Фильтр.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения filter_type . Тип фильтра. filter_type может быть только одним из следующих: | |
compositeFilter | Составной фильтр. |
fieldFilter | Фильтр по полю документа. |
unaryFilter | Фильтр, принимающий ровно один аргумент. |
КомпозитныйФильтр
Фильтр, который объединяет несколько других фильтров с помощью данного оператора.
JSON-представление |
---|
{ "op": enum ( |
Поля | |
---|---|
op | Оператор объединения нескольких фильтров. |
filters[] | Список фильтров для объединения. Требует:
|
Оператор
Оператор составного фильтра.
Перечисления | |
---|---|
OPERATOR_UNSPECIFIED | Не указано. Это значение нельзя использовать. |
AND | Документы должны соответствовать всем комбинированным фильтрам. |
OR | Документы должны соответствовать хотя бы одному из комбинированных фильтров. |
ФилдФильтр
Фильтр по определенному полю.
JSON-представление |
---|
{ "field": { object ( |
Поля | |
---|---|
field | Поле для фильтрации. |
op | Оператор для фильтрации. |
value | Значение для сравнения. |
Оператор
Оператор фильтра поля.
Перечисления | |
---|---|
OPERATOR_UNSPECIFIED | Не указано. Это значение нельзя использовать. |
LESS_THAN | Данное Требует:
|
LESS_THAN_OR_EQUAL | Данное Требует:
|
GREATER_THAN | Данное Требует:
|
GREATER_THAN_OR_EQUAL | Данное Требует:
|
EQUAL | Данное field равно данному value . |
NOT_EQUAL | Данное Требует:
|
ARRAY_CONTAINS | Данное field представляет собой массив, содержащий заданное value . |
IN | Данное Требует:
|
ARRAY_CONTAINS_ANY | Данное Требует:
|
NOT_IN | Значение Требует:
|
УнарныйФильтр
Фильтр с одним операндом.
JSON-представление |
---|
{ "op": enum ( |
Поля | |
---|---|
op | Унарный оператор, который нужно применить. |
Поле operand_type . Аргумент фильтра. operand_type может быть только одним из следующих: | |
field | Поле, к которому применяется оператор. |
Оператор
Унарный оператор.
Перечисления | |
---|---|
OPERATOR_UNSPECIFIED | Не указано. Это значение нельзя использовать. |
IS_NAN | Данное field равно NaN . |
IS_NULL | Данное field равно NULL . |
IS_NOT_NAN | Данное Требует:
|
IS_NOT_NULL | Данное Требует:
|
Заказ
Порядок на поле.
JSON-представление |
---|
{ "field": { object ( |
Поля | |
---|---|
field | Поле для заказа. |
direction | Направление заказа. По умолчанию — ПО |
Направление
Направление сортировки.
Перечисления | |
---|---|
DIRECTION_UNSPECIFIED | Не указано. |
ASCENDING | По возрастанию. |
DESCENDING | По убыванию. |
Найти ближайший
Конфигурация поиска ближайших соседей.
JSON-представление |
---|
{ "vectorField": { object ( |
Поля | |
---|---|
vectorField | Необходимый. Индексированное векторное поле для поиска. Могут быть возвращены только документы, содержащие векторы, размерность которых соответствует queryVector. |
queryVector | Необходимый. Вектор запроса, по которому мы ищем. Должен быть вектором не более 2048 измерений. |
distanceMeasure | Необходимый. Требуемая мера расстояния. |
limit | Необходимый. Число ближайших соседей для возврата. Должно быть целым положительным числом не более 1000. |
РасстояниеМера
Мера расстояния, используемая при сравнении векторов.
Перечисления | |
---|---|
DISTANCE_MEASURE_UNSPECIFIED | Не следует устанавливать. |
EUCLIDEAN | Измеряет ЕВКЛИДОВОЕ расстояние между векторами. См. Евклид, чтобы узнать больше. |
COSINE | Сравнивает векторы по углу между ними, что позволяет измерить сходство, не основанное на величине векторов. Мы рекомендуем использовать DOT_PRODUCT с единичными нормализованными векторами вместо расстояния COSINE, что математически эквивалентно и обеспечивает лучшую производительность. См. раздел «Косинусное сходство» , чтобы узнать больше. |
DOT_PRODUCT | Аналогично косинусу, но на него влияет величина векторов. См. «Скалярное произведение» , чтобы узнать больше. |