我在python中有一个项目,我需要从其中的一个文档中获取 indexes 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('*****', '*******'))
我尝试每个索引,但这不是我想要的
答案 0 :(得分:0)
您可以使用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`
}
}
}
请注意,您不能使用别名的概念直接获得像GET my_index/_doc/1234
这样的文档,因为它首先是单个索引操作,我相信拥有别名的全部目的是无缝增强搜索功能,而不是为了直接文档检索。
答案 1 :(得分:0)
使用elasticsearch的别名功能可将所有索引映射到一个别名下。稍后代替查询所有8个索引,而是查询关联的别名索引,这将为您完成所有8个搜索并返回结果。