固定查询

编辑

将选定的文档提升到比匹配给定查询的文档更高的排名。此功能通常用于引导搜索者查看经过筛选的文档,这些文档会高于任何搜索的“自然”匹配项。提升或“固定”的文档使用存储在_id字段中的文档 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
(可选,数组)文档 ID,按它们在结果中出现的顺序排列。如果未指定docs,则为必需项。
docs

(可选,数组)按它们在结果中出现的顺序排列的文档列表。如果未指定ids,则为必需项。你可以为每个文档指定以下属性

_id
(必需,字符串)唯一的文档 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"
        }
      }
    }
  }
}

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

当缺少 _index 时,来自查询索引的所有 ID 为 4 的文档将以相同的分数固定。