为什么Elasticsearch索引工作如此奇怪?

时间:2020-07-11 22:17:17

标签: python python-3.x elasticsearch python-requests

我试图通过弹性搜索为一些数据建立索引,但是遇到了奇怪的行为。

如果我的代码是:

import requests
#data = {'key': 'value'}
data = {'v': 'pf'}
#data = generate_document()
print(data)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post('http://localhost:9200/qa/_doc', data=json.dumps(data), headers=headers)
print(r.status_code)

我得到201作为响应代码。

但是如果我有data = {'va': 'pf'},出于某种原因,我会得到400状态代码。

为什么发生这些奇怪的事情?

基本上,我想随机生成data并将其编入索引。大多数情况下,它会抛出400。但是像data = {"key": "value"}这样的常规事物还是可以的。

2 个答案:

答案 0 :(得分:1)

尝试:

import requests
#data = {'key': 'value'}
data = {'v': 'pf'}
#data = generate_document()
print(data)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post('http://localhost:9200/qa/_doc', json=data, headers=headers)

答案 1 :(得分:1)

状态码400可能有多种原因:

  1. 可能导致我的mappings.dynamic设置为严格
  2. 可能是由于索引中超过1000个字段造成的。

可能还有其他人。