首页 > 解决方案 > elasticsearch7 python search() api使用HTTP POST方法而不是HTTP GET

问题描述

我有一个带有映射的弹性搜索索引“job-index”

{
    "mappings": {
        "properties": {
            "join_field": {
                "type": "join",
                "relations": {
                    "job": "checkpoint"
                }
            }
        }
    }
}

当我执行

获取 /job-index/_search

{
  "query": {
    "term": {
      "join_field.name": "job"
    }
  }
}

它返回所有工作类型的文档。

但是当我使用 HTTP POST 执行相同的查询时,它返回 0 个命中。

我正在使用 elasticsearch7 python,它使用 HTTP POST 作为搜索 API。下面是我正在使用的python代码

from elasticsearch7 import Elasticsearch
es7 = Elasticsearch('localhost:9200')
resp = es7.search(body=json.dumps(payload), index=self.job_index)

以下是日志

DEBUG:urllib3.connectionpool:http://localhost:9200 "POST /job-index/_search HTTP/1.1" 200 160
INFO:elasticsearch:POST http://localhost:9200/job-index/_search [status:200 request:0.006s]
DEBUG:elasticsearch:> {"query": {"term": {"join_field.name": "job"}}}
DEBUG:elasticsearch:< {"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":0,"relation":"eq"},"max_score":null,"hits":[]}}

标签: pythonelasticsearchelasticsearch-7elasticsearch-py

解决方案


推荐阅读