固定查询编辑

将选定的文档提升到比匹配给定查询的文档更高的排名。此功能通常用于引导搜索者查看经过精心挑选的文档,这些文档优先于任何搜索的“自然”匹配。提升或“固定”的文档使用存储在 _id 字段中的文档 ID 来识别。

示例请求编辑

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

pinned 的顶层参数编辑

ids
(可选,数组) 按其在结果中出现的顺序列出的 文档 ID。如果未指定 docs,则需要此参数。
docs

(可选,数组) 按其在结果中出现的顺序列出的文档。如果未指定 ids,则需要此参数。您可以为每个文档指定以下属性

_id
(必需,字符串) 唯一的 文档 ID
_index
(可选,字符串) 包含文档的索引。
organic
用于对文档进行排名的任何查询选择,这些文档将在“固定”文档下方进行排名。

在特定索引中固定文档编辑

如果您在多个索引上进行搜索,可以使用 docs 在特定索引中固定文档

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

来自 my-index-000001 的 id 为 1 的文档将是第一个结果。

_index 缺失时,来自查询索引的所有 id 为 4 的文档将以相同的得分固定。