python - 我如何仅通过所有索引的id从elasticsearch获取文档

标签 python elasticsearch

我在python中有一个项目,我需要从其中一个获取索引index_1 2 3或4 的文档,但我只有id,在不久的将来我将再有4个idexe,所以总共有8 我可以在8个版本中的每个版本中都找不到文档。
所以我的问题是,有没有办法直接通过ID获取文档?如果没有,还有其他选择吗?非常感谢你
这是我到目前为止所拥有的:

url = settings.ES_URL+"/{}/_doc/{}?pretty=false"
url = url.format(index, id)
r = requests.get(url,auth=HTTPBasicAuth('*****', '*******'))
我尝试每个索引,但这不是我想要的

最佳答案

您可以使用Index Alias。从本质上讲,它仍然在多个索引中搜索,但是搜索时不必提及单个索引名称。
说我有以下两个索引

PUT my_index_001    

PUT my_index_002
在这些索引中的两个文件下面
POST my_index_001/_doc/1234
{
  "myfield": "test"
}

POST my_index_002/_doc/1235
{
  "myfield": "test"
}
我可以按照以下方式创建别名索引my_index
PUT /my_index_001/_alias/my_index

PUT /my_index_002/_alias/my_index
现在,您可以简单地使用此索引通过任何termmatch查询来搜索文档。
POST my_index/_search.          <--- Note the index used here to search
{
  "query": {
    "term": {
      "_id": "1234"             <--- Note the field `_id`
    }
  }
}
请注意,您不能使用Alias的概念直接像GET my_index/_doc/1234那样直接获取文档,因为这首先是单个索引操作,并且我相信拥有别名的整个目的是无缝增强搜索功能,而不是直接用于文档检索。

关于python - 我如何仅通过所有索引的id从elasticsearch获取文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63525380/

相关文章:

elasticsearch - ElasticSearch:替换整批索引项

rest - Logstash服务器可以从RestURL读取数据

Pythonic 方式循环对象属性并分配新属性

python - 如何在python中建立一个不规则的时间序列预测模型?

python - 如何在 django 中完成工作后删除模板中的 session 变量

elasticsearch - 如何在ElasticSearch中保持PathHierarchy token 生成器产生的* only *最长期限?

symfony - Symfony Elasticsearch 查询 bool 排序

c# - 如何获取 ElasticSearch 索引中的现有映射

python - AWS Lambda 函数状态 (zappa)

python - 如何在 FastAPI 中为 Pydantic 模型编写测试?