2015-05-26 2 views
1

Я пытался запустить следующий запрос, но каждый раз, когда я запускаю его я получаю следующее сообщение об ошибке:Elasticsearch: Ожидаемое имя поля, но получил START_OBJECT

nested: ElasticsearchParseException[Expected field name but got START_OBJECT \"field_value_factor\"]; }]","status":400 

Вот запрос:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "should": [{ 
      "match": { 
       "thread_name": "parenting" 
      } 
      }, { 
      "nested": { 
       "path": "messages", 
       "query": { 
       "bool": { 
        "should": [{ 
        "match": { 
         "messages.message_text": "parenting" 
        } 
        }] 
       } 
       }, 
       "inner_hits": {} 
      } 
      }] 
     } 
     } 
    }, 
    "field_value_factor": { 
     "field": "thread_view" 
    } 
    } 
} 

ответ

1

Ваша функция field_value_factor неуместна. это должно быть nested within the functions property. Попробуйте этот запрос вместо

{ 
    "query": { 
    "function_score": { 
     "functions": [ 
     { 
      "field_value_factor": { 
      "field": "thread_view" 
      } 
     } 
     ], 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "match": { 
       "thread_name": "parenting" 
       } 
      }, 
      { 
       "nested": { 
       "path": "messages", 
       "query": { 
        "bool": { 
        "should": [ 
         { 
         "match": { 
          "messages.message_text": "parenting" 
         } 
         } 
        ] 
        } 
       }, 
       "inner_hits": {} 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
0

У вас ошибка в запросе, field_value_factor является н атрибут function_score:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "should": [{ 
      "match": { 
       "thread_name": "parenting" 
      } 
      }, { 
      "nested": { 
       "path": "messages", 
       "query": { 
       "bool": { 
        "should": [{ 
        "match": { 
         "messages.message_text": "parenting" 
        } 
        }] 
       } 
       }, 
       "inner_hits": {} 
      } 
      }] 
     } 
     }, 
     "field_value_factor": { 
     "field": "thread_view" 
     } 
    } 
    } 
} 

, поскольку у вас есть одна функция, вам не нужно, чтобы гнездиться это в " функции "

+0

Ах, спасибо большое! Теперь он не дает никаких ошибок, но есть ли способ отделить результаты thread_name и результаты message_text. После того, как я положил результат функции, результаты смешаны, возвращая message_text сначала, потому что он более популярен, чем результат, с ключевым словом в заголовке заголовка –

+0

нет, вы не можете сделать такую ​​вещь в одном запросе, но вы можете использовать повышение одно из полей для обеспечения результатов для этого поля всегда будет первым. –

Смежные вопросы