elasticsearch Elasticsearch:执行自定义分数脚本时在映射中未找到字段,elasticsearch,groovy,groovyscriptengine,elasticsearch,Groovy,Groovyscriptengine" /> elasticsearch Elasticsearch:执行自定义分数脚本时在映射中未找到字段,elasticsearch,groovy,groovyscriptengine,elasticsearch,Groovy,Groovyscriptengine" />

elasticsearch Elasticsearch:执行自定义分数脚本时在映射中未找到字段

elasticsearch Elasticsearch:执行自定义分数脚本时在映射中未找到字段,elasticsearch,groovy,groovyscriptengine,elasticsearch,Groovy,Groovyscriptengine,我已经为这个问题挣扎了好几个小时了。我正在尝试使用ScriptScoreGroovy在搜索中实现自定义分数 映射: { "properties": { "m_skill": { "properties": { "actual_period": { "type": "long" }, "area_display": { "type": "s

我已经为这个问题挣扎了好几个小时了。我正在尝试使用ScriptScoreGroovy在搜索中实现自定义分数

映射:

{
"properties": {
    "m_skill": {
        "properties": {
            "actual_period": {
                "type": "long"
            },
            "area_display": {
                "type": "string"
            },
            "c": {
                "type": "double"
            },
            "capability": {
                "type": "string"
            },
            "capability_display": {
                "type": "string"
            },
            "order_wt": {
                "type": "double"
            },
            "skillarea": {
                "type": "string"
            },
            "star_wt": {
                "type": "double"
            },
            "w": {
                "type": "double"
            }
            }
        }
    },
    "personid": {
        "type": "string"
    },
    date_of_creation": {
        "type": "long"
    },
    "phone": {
        "properties": {
            "c": {
                "type": "long"
            },
            "v": {
                "type": "string"
            }
        }
    }
}
m_技能是一个数组

查询:

{"match_all":{}}
乐谱脚本:

return doc['m_skill'].values.star_wt.sum()
错误:

No field found for [m_skill] in mapping with types [peopleworld]
但我没有得到任何例外,当我尝试同样的创建日期。 我发现有些人在谈论同一个问题,但几乎没有任何帖子有回复。有人遇到过这样的问题吗。我做错了什么

另一个问题,我的公式很复杂,我在上面写过。在简单的语言中,这就像当用户要求一组技能时,我会在询问了技能后选择文档,并根据他们的星级,给他们一个分数,用于对最终结果集进行排序。使用elasticsearch自定义分数实现相同的功能是一个好主意吗


欢迎提供任何帮助。

您在映射中缺少创建日期的双引号。这可能是导致您出现问题的原因。我在这个答案中为您添加了带有已验证JSON的映射

{
   "properties":{
      "m_skill":{
         "properties":{
            "actual_period":{
               "type":"long"
            },
            "area_display":{
               "type":"string"
            },
            "c":{
               "type":"double"
            },
            "capability":{
               "type":"string"
            },
            "capability_display":{
               "type":"string"
            },
            "order_wt":{
               "type":"double"
            },
            "skillarea":{
               "type":"string"
            },
            "star_wt":{
               "type":"double"
            },
            "w":{
               "type":"double"
            }
         }
      }
   },
   "personid":{
      "type":"string"
   },
   "date_of_creation":{
      "type":"long"
   },
   "phone":{
      "properties":{
         "c":{
            "type":"long"
         },
         "v":{
            "type":"string"
         }
      }
   }
}

谢谢Donglecow的努力,但我终于解决了这个问题。这不是创建日期字段。我试图访问'doc'中的'Object',这是不可能的,因为它只能给我变量。doc['m_skill.skillarea']成功了。