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

Elasticsearch查询错误-[或]查询格式不正确,查询名称后没有start_object

顾俊誉
2023-03-14

有人可以解释一下这个查询有什么问题吗?我需要将此生成的查询从弹性搜索 2 转换为弹性搜索 6。在ES2中,这个工作得很好,但在ES6中,它给我一个错误:[或]查询格式不正确,查询名称后没有start_object。我迷失在其中。OR是必要的,因为可能有更多的条件比这个。

{
    "query": {
        "bool": {
            "filter": {
                "or": [
                    {
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [
                                        {
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
        }
    },
    "size": 20,
    "sort": [
        {
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}

谢谢。

共有2个答案

韩季
2023-03-14

尝试将“过滤器-或”更改为“应该”

{
    "query": {
        "bool": {
              "should" : [
                    {
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [
                                        {
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
    },
    "size": 20,
    "sort": [
        {
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}
韦安顺
2023-03-14

在ES6中,没有“OR”查询(https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-or-query.html)。您应该使用布尔查询,并在那里使用“应该”部分(https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-bool-query.html)。

{
    "query": {
        "bool": {
            "filter": [{
                "bool": {
                    "should": [{
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [{
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }]
                }
            }]
        }
    },
    "size": 20,
    "sort": [{
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}
 类似资料:
  • 问题内容: 我正在针对AWS Elasticsearch 5.1运行此查询,并收到格式错误的查询错误。这是请求的正文。我基本上只是在检查时间范围内是否存在该字段。 问题答案: 第二条陈述不正确:

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

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

  • 我已经使用映射查询在ElasticSearch中执行搜索,它工作得很好,如下所示。 然而,即使我添加了“terms”,我也会得到错误:TransporDeror(400,u'parsing_exception',u'[term]格式错误的查询,预期的[END_OBJECT]但找到了[FIELD_NAME]')

  • 我对Bool查询和在elasticsearch中查找精确值有点困惑。具体来说,我有一个title_field和post_field,我想搜索。但是我使用的所有其他字段,因为我想查找它们是否存在或不存在,或者有多少次(如网址或用户名,必须是准确的)。 因此,我可以从文档中看到,我可以对title_字段和post_字段进行多重匹配查询。 但我希望得到确切答复的其他领域呢?我是否执行布尔查询(使用mus

  • 我对命名查询有问题,但我不明白为什么它不工作。 我是这样定义查询的: 在这里我使用它: 错误:由:组织引起。冬眠HibernateException:命名查询中的错误:getUserRatings