客户端助手编辑

您可以在此处找到一些简单的辅助函数集合,它们抽象了原始 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-*"
)