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

时间:2017-02-22 14:18:01

标签: elasticsearch groovy groovyscriptengine

我几个小时以来一直在努力解决这个问题。我正在尝试使用脚本分数(groovy)在我的搜索中实现自定义分数。

映射:

{
"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_skill是一个数组)

查询:

{"match_all":{}}

分数脚本:

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

错误:

No field found for [m_skill] in mapping with types [peopleworld]

但是当我尝试使用“date_of_creation”时,我没有任何异常。 我发现有些人在谈论同样的问题,但几乎没有任何帖子有回复。有没有人遇到这样的问题。我做错了什么?

另一个问题,我的公式比上面写的那么复杂。用简单的语言来说,就像当用户要求一组技能时,我选择有技能的文档,并根据他们的star_wt我给他们一个分数,用于对最终结果集进行排序。使用elasticsearch自定义分数实现相同的是一个好主意吗?

任何帮助都会受到欢迎。

1 个答案:

答案 0 :(得分:0)

你错过了" date_of_creation"的双引号在您的映射中。这可能会导致您的问题。我已在此答案中为您添加了经过验证的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"
         }
      }
   }
}