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