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

Elasticsearch包含带有term和function_score、parsing_exception的

吕飞翼
2023-03-14

向弹性搜索发送post请求以下是post数据

{
    "query": {
            "has_child" : {
                "type" : "sometype",
                "score_mode" : "sum",
                "query" : {
                    "term" : {
                        "somefield" : "somevalue"
                    },
                    "function_score" : {
                        "script_score": {"script": "1"}
                    }
                },
                "inner_hits": {}
            }
        }
      }
    }

作为格式错误的查询获取响应

{
"error": {
    "root_cause": [
        {
            "type": "parsing_exception",
            "reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
            "line": 10,
            "col": 17
        }
    ],
    "type": "parsing_exception",
    "reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line": 10,
    "col": 17
},
"status": 400

}

从以下链接阅读文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-havs-child-query.html

Elasticsearch版本:5.4

共有1个答案

秦晋
2023-03-14

您应该确保将术语function_score查询包装在bool/filter查询中,如下所示:

{
  "query": {
    "has_child": {
      "type": "sometype",
      "score_mode": "sum",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "somefield": "somevalue"
              }
            },
            {
              "function_score": {
                "script_score": {
                  "script": "1"
                }
              }
            }
          ]
        }
      },
      "inner_hits": {}
    }
  }
}
 类似资料:
  • 问题内容: 我有两种文档类型,具有父子关系: 该字段将用于自定义评分/排序。直接针对父文档的此查询按预期工作: 但是,当尝试通过查询对子文档进行类似评分时,出现错误: 错误是: QueryPhaseExecutionException [[myIndex] [3]:查询[过滤(ParentQuery [myParent](过滤(功能评分(ConstantScore( : ), 函数=脚本[_sco

  • 我在ElasticSearch有索引。其中的文档具有重复的字段值。在查询结果中,我需要删除所有重复项,并且只获得不同的值。例如: PUT localhost:9200/人 POST localhost:9200/人/人 我试图通过字段“name”删除重复的术语聚合,但它不起作用。 获取localhost:9200/person/person/_search 结果: 聚合应用于name=“marry

  • 问题内容: 我有一个登录页面。用户成功登录后,他们可以查看和管理其个人资料/信息。这可以通过从数据库检索数据并显示在formview上来完成。 但是,以下错误出现在我的userprofile.aspx.cs文件中: Userprofile.aspx: Userprofile.aspx.cs: 问题答案: 请尝试以下方法: 我虽然没有测试

  • 问题内容: 我有一个对象映射,它以类似标签的方式使用嵌套对象(在我们的示例中)。每个标签可以属于一个客户/用户,并且当我们要允许我们的用户针对生成样式搜索时。 问题是,当我们运行查询时,如果一个对象有多个道具,并且当其他道具不返回时,如果多个道具之一与过滤器匹配,则当我们想要相反时- 如果一个道具返回false,则不返回vs。如果返回true,则返回true。 我在这里发布了一个完整的示例:htt

  • 我试图使用gettext来翻译字符串在我的网站 gettext检测字符串没有问题,例如 或者 但显然我们通常会在网站上使用这样的代码 当然,在网站中,$siteName正确显示为 如果我们把 以前。 我的问题是,我使用poedit来提取代码中需要翻译的所有字符串,而poedit似乎没有像上面所述那样用php代码提取所有字符串。那么,如何让poedit中的php代码提取字符串呢?或者我应该使用其他工

  • 正在寻找旧JSF页面的解决方案。我试图使用contains方法根据另一列是否包含单词red box来呈现组合框。 这一个工作和组合框被禁用。 但是,我也想在值不包含红色框时渲染它们,但随后将启用combox。 这是行不通的。 因此,我如何测试的任何想法都不包含特定的单词。我还尝试了choose test when,但由于第一个表。col4值只是一个空字符串。 有什么想法吗?谢谢。