Elasticsearch: поле не найдено в отображении при выполнении пользовательского сценария оценки
Я боролся с этой проблемой в течение нескольких часов. Я пытаюсь реализовать пользовательский счет в моем поиске, используя сценарий (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 присваиваю им баллы, которые используются для сортировки окончательного набора результатов. Это хорошая идея для реализации того же с использованием настраиваемой оценки эластичного поиска?
Любая помощь будет приветствоваться.
1 ответ
В вашем отображении отсутствует двойная кавычка на "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"
}
}
}
}