2017-01-19 2 views
0

У меня есть проблема в запросе, когда обновление elasticsearch 2.x до elasticsearch 5.0Получить какую-нибудь причину ошибки, когда обновление elasticsearch 2.x до elasticsearch 5,0

Этот запрос:

"query": { 
    "function_score": { 
    "query": { 
     "filtered": { 
     "query": { 
      "dis_max": { 
      "queries": [{ 
       "match_phrase": { 
       "title": { 
        "query": "keyword", 
        "slop": 3 
       } 
       } 
      }, { 
       "match_phrase": { 
       "content": { 
        "query": "keyword", 
        "slop": 3 
       } 
       } 
      }], 
      "tie_breaker": 0.3 
      } 
     }, 
     "filter": { 
      "bool": { 
      "should": [{ 
       "bool": { 
       "must": [{ 
        "type": { 
        "value": "product" 
        } 
       }, { 
        "term": { 
        "is_deleted": false 
        } 
       }] 
       } 
      }, { 
       "bool": { 
       "must": [{ 
        "type": { 
        "value": "service" 
        } 
       }, { 
        "term": { 
        "is_deleted": false 
        } 
       }] 
       } 
      }] 
      } 
     } 
     } 
    }, 
    "functions": [{ 
     "script_score": { 
     "script": "doc['_type'].value == 'product' ? _score * 15 : (doc['_type'].value == 'service' ? _score * 10 : _score)", 
     "lang": "groovy" 
     } 
    }] 
    } 
} 

я причину, как это:

{ 
    "error" : { 
    "root_cause" : [ 
     { 
     "type" : "parsing_exception", 
     "reason" : "no [query] registered for [filtered]", 
     "line" : 6, 
     "col" : 76 
     } 
    ], 
    "type" : "parsing_exception", 
    "reason" : "no [query] registered for [filtered]", 
    "line" : 6, 
    "col" : 76 
    }, 
    "status" : 400 
} 

у меня есть исследования, в elasticsearch 5.0 filtered было depracted, и я должен измениться на bool. Я стараюсь, чтобы изменить его, но я получаю причину ошибки выглядеть «script_score запрос не поддерживает [язык]»

ответ

1

Вы должны изменить свой запрос на это:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "must": { 
      "dis_max": { 
       "queries": [ 
       { 
        "match_phrase": { 
        "title": { 
         "query": "keyword", 
         "slop": 3 
        } 
        } 
       }, 
       { 
        "match_phrase": { 
        "content": { 
         "query": "keyword", 
         "slop": 3 
        } 
        } 
       } 
       ], 
       "tie_breaker": 0.3 
      } 
      }, 
      "filter": { 
      "bool": { 
       "should": [ 
       { 
        "bool": { 
        "must": [ 
         { 
         "type": { 
          "value": "product" 
         } 
         }, 
         { 
         "term": { 
          "is_deleted": false 
         } 
         } 
        ] 
        } 
       }, 
       { 
        "bool": { 
        "must": [ 
         { 
         "type": { 
          "value": "service" 
         } 
         }, 
         { 
         "term": { 
          "is_deleted": false 
         } 
         } 
        ] 
        } 
       } 
       ] 
      } 
      } 
     } 
     }, 
     "functions": [ 
     { 
      "script_score": { 
      "script": { 
       "inline": "doc['_type'].value == 'product' ? _score * 15 : (doc['_type'].value == 'service' ? _score * 10 : _score)", 
       "lang": "groovy" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

Это работает .. Я думаю, что есть ошибка при замене 'отфильтрован' на' bool' – itx

+0

Нет, 'script_score' также нуждался в некоторой настройке – Val

+0

Да, я скучаю по этому, вы сохраняете мои времена :), ждите в считанные минуты – itx

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