Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Query DSL ›Специализированные запросы

Запрос Pinned

Выводит выбранные документы с более высоким рейтингом, чем документы, соответствующие заданному запросу. Эта функция обычно используется для наведения поисковиков на отобранные документы, которые выводятся поверх «органических» совпадений по результатам поиска. Промотируемые или «прикреплённые» документы идентифицируются с помощью идентификаторов документов, хранящихся в поле _id.

Пример запроса

resp = client.search(
    query={
        "pinned": {
            "ids": [
                "1",
                "4",
                "100"
            ],
            "organic": {
                "match": {
                    "description": "iphone"
                }
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      pinned: {
        ids: [
          '1',
          '4',
          '100'
        ],
        organic: {
          match: {
            description: 'iphone'
          }
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    pinned: {
      ids: ["1", "4", "100"],
      organic: {
        match: {
          description: "iphone",
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "pinned": {
      "ids": [ "1", "4", "100" ],
      "organic": {
        "match": {
          "description": "iphone"
        }
      }
    }
  }
}

Параметры верхнего уровня для pinned

ids
(Необязательный массив) Идентификаторы документов в порядке их отображения в результатах. Требуется, если docs не указан.
docs

(Необязательный массив) Документы в порядке их отображения в результатах. Требуется, если ids не указан. Вы можете указать следующие атрибуты для каждого документа:

_id
(Обязательный строковый тип) Уникальный идентификатор документа.
_index
(Необязательный строковый тип) Индекс, содержащий документ.
organic
Любой запрос, используемый для ранжирования документов, которые будут отображаться ниже «прикреплённых» документов.

Прикрепление документов в определённом индексе

Если вы осуществляете поиск по нескольким индексам, вы можете прикрепить документ к конкретному индексу, используя docs:

resp = client.search(
    query={
        "pinned": {
            "docs": [
                {
                    "_index": "my-index-000001",
                    "_id": "1"
                },
                {
                    "_id": "4"
                }
            ],
            "organic": {
                "match": {
                    "description": "iphone"
                }
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      pinned: {
        docs: [
          {
            _index: 'my-index-000001',
            _id: '1'
          },
          {
            _id: '4'
          }
        ],
        organic: {
          match: {
            description: 'iphone'
          }
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    pinned: {
      docs: [
        {
          _index: "my-index-000001",
          _id: "1",
        },
        {
          _id: "4",
        },
      ],
      organic: {
        match: {
          description: "iphone",
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "pinned": {
      "docs": [
        {
          "_index": "my-index-000001", 
          "_id": "1"
        },
        {
          "_id": "4" 
        }
      ],
      "organic": {
        "match": {
          "description": "iphone"
        }
      }
    }
  }
}

Документ с id 1 из my-index-000001 будет первым в результатах.

Когда _index отсутствует, все документы с id 4 из запрошенных индексов будут закреплены с одинаковым рейтингом.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-pinned-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API