如何从elasticsearch中仅通过id从所有索引中获取文档

68bkxrlz  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(2)|浏览(511)

我在python中有一个项目,我需要从索引1、2、3或4中的一个获取文档,但我只有id,在不久的将来,我还将有4个idexe,所以总共8个,我无法在8个索引中的每个索引中查找文档。
所以我的问题是,有没有办法直接通过身份证拿到医生?如果没有,还有别的选择吗?非常感谢你
以下是我到目前为止所拥有的:

url = settings.ES_URL+"/{}/_doc/{}?pretty=false"
url = url.format(index, id)
r = requests.get(url,auth=HTTPBasicAuth('*****', '*******'))

我尝试了所有的索引,但那不是我想要的

juzqafwq

juzqafwq1#

使用elasticsearch的别名功能Map一个别名下的所有索引。稍后,不用查询所有8个索引,而是查询关联的alias index和,这样您就可以搜索所有8个索引并返回结果。

v2g6jxz6

v2g6jxz62#

可以使用索引别名。本质上,它仍然在多个索引中搜索,但在搜索时不必提及单个索引名。
假设我有以下两个索引

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 首先使用别名的概念,这是一个单一的索引操作,我相信使用别名的全部目的是无缝地增强搜索功能,而不是用于直接的文档检索。

相关问题