【问题标题】:Python JSON - Elasticsearch - [_na] query malformed, must start with start_objectPython JSON - Elasticsearch - [_na] 查询格式错误,必须以 start_object 开头
【发布时间】:2018-11-22 17:22:43
【问题描述】:

我正在尝试在 Python 发布请求中复制以下 json 参数:

这是我字典里的:

payload = {
           'match':{'situs.state':'AL'},
           'notMatch':{},
           'page':1,
           'range':{
                   'loanAmount':[
                                 {
                                  'gte':None,
                                  'lte':10000000
                                 }
                                ]
                    },
            'size':100
          }

然后,我使用 json.dumps 将此字典传递到我的 post 请求中,以便将其转换为 json 并与 post 请求一起发送。

数据 = json.dumps(有效负载)

但是,当我收到以下错误时,没有任何效果:

{"type":"Elasticsearch","message":"[parsing_exception] [_na] 查询 格式错误,必须以 start_object 开头,{ line=1 & col=119 }","path":"/some_path","query":{"size":100,"from":0},"statusCode":400,"body":{"error":{"root_cause": [{"type":"parsing_exception","re​​ason":"[_na] 查询格式错误,必须以 start_object","line":1,"col":119}],"type":"parsing_exception","re​​ason":"[_na] 查询格式错误,必须以 start_object","line":1,"col":119},"status":400}}

我哪里错了?

【问题讨论】:

  • 0 应该是 gte1 应该是 lte
  • 我是 json 新手。我只是快速检查了 gte 和 lte 是什么。替换它们(我还编辑了我的初始帖子以反映更改)并再次运行代码后,我现在得到 :"type": "parsing_exception","re​​ason":"[range] 查询不支持多个字段, 找到 [loanAmount] 和 [lte]"

标签: python json elasticsearch post python-requests


【解决方案1】:

范围部分应该是这样的:

     'range':{
          'loanAmount':{
              'gte':None,
              'lte':10000000
          }
     },

【讨论】:

  • 看了一圈,果然如你所说。我传递了两个参数而不是一个。但是,我需要将 loanAmount 保留为数组而不是字典。使用loanAmount 作为字典运行代码会崩溃,并出现TypeError: unhashable type: 'dict'。我已经修改了我的代码以反映更改和我的新错误。
  • 除此之外,您的有效负载不是有效的 DSL 查询。 notMatchpage 无效,matchrange 需要在 bool 查询中。我不确定您是如何得出这种查询格式的
  • 我是从对 Elasticsearch 一无所知的情况下开始使用这种查询格式的,就像一无所知。我以为我只需要用我的 post 请求复制普通的 json。我不知道我必须遵循特定的格式。这解释了很多!好吧,我想我要去了解 Elasticsearch 是什么以及如何编写正确的查询了。谢谢@Val!
  • 太棒了,很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多