我在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
现在,您可以简单地使用此索引通过任何term
或match
查询来搜索文档。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/