当前位置: 首页 > 知识库问答 >
问题:

获取 [bool] 格式错误的查询,预期 [END_OBJECT] 但找到 [FIELD_NAME]

鲜于高明
2023-03-14

我正在使用嵌套在弹性搜索查询中以及排序。当我在没有排序的情况下执行查询时,但当我包含排序时,它会给出消息 [bool] 格式错误的查询,预期 [END_OBJECT] 但找到 [FIELD_NAME]。我正在用python构建这个查询。提前谢谢。

    query = {
            'bool': {
            'should': [
                {'nested': {
                    'path': 'profile.summay',
                    'query': {
                        'query_string': {
                            'query': 'machine learning',
                            'fields': ['profile.summay.desc'],
                            'default_operator': "AND"
                            }
                    }
                }},
                {'nested': {
                    'path': 'internal.summary',
                    'query': {
                        'query_string': {
                            'query': 'machine learning',
                            'fields': ['internal.summary.desc'],
                            'default_operator': "AND"
                        }
                    }
                }}
            ]
        },
        "sort": [
            {
                'profile.summary.date':{
                        'order' : 'asc',
                        "nested": { "path": "profile.summary" }
                }
            }
        ]
    }

from elasticsearch import Elasticsearch
es_client = Elasticsearch(['some aws url'])
response = es_client.search(index=index_name, query=query)

共有1个答案

叶书
2023-03-14

你把你的排序放错了。

{
  "query": {
    "bool": {
      "should": [
        {
          "nested": {
            "path": "profile.summay",
            "query": {
              "query_string": {
                "query": "machine learning",
                "fields": ["profile.summay.desc"],
                "default_operator": "AND"
              }
            }
          }
        },
        {
          "nested": {
            "path": "internal.summary",
            "query": {
              "query_string": {
                "query": "machine learning",
                "fields": ["internal.summary.desc"],
                "default_operator": "AND"
              }
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "profile.summary.date": {
        "order": "asc",
        "nested": { "path": "profile.summary" }
      }
    }
  ]
}

根据文档 [doc],排序键需要与查询键位于同一深度上。没有更深的层次。

您的代码需要从

{
  "query": {
    ... query,
    
    "sort": [
      ... sort
    ]
  }
}

自:

{
  "query": {
    ... query
  },
  "sort": [
    ... sort
  ]
}
 类似资料:
  • 我对elasticsearch查询有一些问题。当我使用查询代码时,它反馈消息[bool]格式错误的查询,预期的是[END_OBJECT],但发现的是[FIELD_NAME]。

  • 我正在从2X迁移到5X,我的查询失败了。这是我得到的错误: [multi_match]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]“,”line“:32,”col“:13}”,“type”:“parsing_exception”,“reason”:“[multi_match]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]”,“line”:3

  • SQL编译错误:表达式类型与列数据类型不匹配,预期为DATE,但得到列Invoice_Date的编号(9,0) 我尝试和,但仍然得到相同的错误...如果还有其他我可以尝试的,请告诉我。

  • 我在第二个脚本中得到错误。请解释为什么我在第二个脚本中得到错误。 从LCL_SHR_IncidentIntegrationInt中选择count(*),其中externalsystem='ipsoft'和(to_char(sysdate,'yyyymmddhh24miss')-to_char(fn_adjusted_date(CREATE_DATE),'yyyymmddhh24miss'))>18

  • 我有三个表,分别名为device_table、playlist_table和device_playlist_assoc device_playlist_assoc表用于将设备与播放列表相关联。 device_table playlist_table Device_PlayList_Assoc 所以,我想要的是那些没有播放列表的设备。我只从前端获得playlist_id作为参数。所以我想要一个sql

  • 问题内容: 我正在尝试使用elasticsearch和ruby-on- rails建立一个现有项目。我可以启动并运行该项目,但是elasticsearch查询为我返回了各种错误消息,而我的同事都没有: 这显然使我相信这与我的设置有关。我已经安装了它们的相同版本(2.4),但是即使项目附带了setup命令,也是如此: 给我超时错误。我已经检查并且服务正在运行。如果我在此方面呆了2天,将对我的设置有什

  • 我最近在java上了一些OOP课程。在今天实现它时,我在程序中遇到了“找不到符号”错误。旁边的建议中写着“期望表达”。我已经试着找出我的错误有一段时间了,但到目前为止我还没有遇到任何运气。有人能帮帮我吗? 这是我的主要课程: 我的另一个班: java:找不到符号symbol:class SlotMac位置:class Slotmachine 同样的错误一堆时间。

  • 我试图在Elasticsearch中创建一个具有以下条件的手表: 字段“ht”必须小于100 字段“SV”不能是“Tier1”,字段“RV”可以是其他任何内容。 字段“SV”不得为“Tier2”,字段“RV”不得为“Red”。 这是我此刻的身体搜索,但它返回: “[term]格式错误的查询,应为[END_OBJECT],但找到[FIELD_NAME]”: 你能帮帮我吗?谢了。