客户端助手

编辑

您可以在这里找到一些简单的助手函数集合,它们抽象了原始 API 的一些细节。有关详细示例,请参阅此页面

批量助手

编辑

批量 API 有几个助手,因为其对特定格式的要求和其他考虑因素,如果直接使用可能会很麻烦。

所有批量助手都接受一个 {es} 类的实例和一个可迭代的 action (任何可迭代对象,也可以是生成器,这在大多数情况下是理想的,因为它允许您索引大型数据集而无需将其加载到内存中)。

可迭代对象 action 中的项应该是我们希望以多种格式索引的文档。最常见的一种与 search() 返回的相同,例如:

{
  '_index': 'index-name',
  '_id': 42,
  '_routing': 5,
  'pipeline': 'my-ingest-pipeline',
  '_source': {
    "title": "Hello World!",
    "body": "..."
  }
}

或者,如果 _source 不存在,它会从文档中弹出所有元数据字段,并将其余部分用作文档数据。

{
  "_id": 42,
  "_routing": 5,
  "title": "Hello World!",
  "body": "..."
}

bulk() API 接受 indexcreatedeleteupdate 操作。使用 _op_type 字段来指定操作 (_op_type 默认为 index)

{
  '_op_type': 'delete',
  '_index': 'index-name',
  '_id': 42,
}
{
  '_op_type': 'update',
  '_index': 'index-name',
  '_id': 42,
  'doc': {'question': 'The life, universe and everything.'}
}

扫描

编辑

scroll() API 之上的简单抽象 - 一个简单的迭代器,它产生所有由底层滚动请求返回的命中项。

默认情况下,扫描不会以任何预定的顺序返回结果。要在滚动时使返回的文档具有标准顺序(按得分或显式排序定义),请使用 preserve_order=True。这可能是一项昂贵的操作,并且会抵消使用 scan 的性能优势。

scan(es,
    query={"query": {"match": {"title": "python"}}},
    index="orders-*"
)