如何使用 get 方法在 elasticsearch python 中搜索

How to search in elasticsearch python using get method

我的索引数据低于

{'took': 0,
 'timed_out': False,
 '_shards': {'total': 1, 'successful': 1, 'skipped': 0, 'failed': 0},
 'hits': {'total': {'value': 4, 'relation': 'eq'},
  'max_score': 1.0,
  'hits': [{'_index': 'my-index_1',
    '_type': '_doc',
    '_id': 'COdBR3MB5PHr9J6CaD9A',
    '_score': 1.0,
    '_source': {'id': '1', 'data': 'Health'}},
   {'_index': 'my-index_1',
    '_type': '_doc',
    '_id': 'CedBR3MB5PHr9J6CaD_S',
    '_score': 1.0,
    '_source': {'id': '2', 'data': 'countries'}},
   {'_index': 'my-index_1',
    '_type': '_doc',
    '_id': 'CudBR3MB5PHr9J6CaD_Z',
    '_score': 1.0,
    '_source': {'id': '3', 'data': 'countries currency'}},
   {'_index': 'my-index_1',
    '_type': '_doc',
    '_id': 'C-dBR3MB5PHr9J6CaD_g',
    '_score': 1.0,
    '_source': {'id': '4', 'data': 'countries language'}}]}}

Q1。 * 如何使用get方法获取id=4?

我的下面的代码不起作用

firstdoc = es.get(index="my-index_1",  id='4')
print(firstdoc['_source'])

NotFoundError Traceback (most recent call last)

预计结束

{'_index': 'my-index_1',
        '_type': '_doc',
        '_id': 'C-dBR3MB5PHr9J6CaD_g',
        '_score': 1.0,
        '_source': {'id': '4', 'data': 'countries language'}}

下面是将文档推送到elasticsearch的代码

from elasticsearch import Elasticsearch
es = Elasticsearch()

r = [{'id': '1', 'data': 'Health'},
 {'id': '2', 'data': 'countries'},
 {'id': '3', 'data': 'countries currency'},
 {'id': '4', 'data': 'countries language'}]

es.indices.create(index='my-index_1', ignore=400)
for e in enumerate(r):
    #es.indices.update(index="my-index_1", body=e[1])
    es.index(index="my-index_1", body=e[1])

.get方法id参数指的是elastic meta id,即_id。要获取包含值为“4”的名为 id 的字段的记录,您需要使用 es.search(index='my-index-1', body={"query": {"match": {"id": "4"}}}) 之类的内容 search/query。如果您希望弹性 _id 与 r 中的 id 字段相同,您需要将索引修改为 es.index(index='my-index-1', id=e[1]['id'], body=e[1]).