Добавление оценки функции (фильтра?) В запрос с помощьюasticsearch

Я изо всех сил пытаюсь заставить запрос работать сasticsearch, где я комбинирую запрос multi_match с повышение поля, field_value_factors, а затем функция, которая должна повысить любые документы, соответствующие конкретному типу документа.

Запрос работает безупречно, за исключением случаев, когда я добавляю во втором запросе функцию function, которая выдает следующие ошибки:

Вы можете определить массив [functions] или одну функцию, но не обе. уже найден [field_value_factor], теперь встречаются [функции]

Чтобы было ясно …

Моя цель — повысить все документы, содержащие поле «doctype», соответствующее термину «html», в 10 раз, используя блок «functions» ниже

Это работает

$param = json_encode(
array(
"query" => array(
"function_score" => array(
"query" => array(
"multi_match" => array(
"query" => $query,
"fields" => array("title^5","body"),
"fuzziness" => 1
)
),
"field_value_factor" => array(
"field" => "hits",
"modifier" => "log1p",
"factor" => 10
),
"field_value_factor" => array(
"field" => "weight",
"modifier" => "log1p",
"factor" => 3
)
)
),
"size" => $offset,
"from" => $start
)
);

Добавление следующего предложения ко второму запросу не работает

"functions" => [array("filter" => array("term" => array("doctype" => "html")), "boost_factor" => 10)],
"max_boost" => 10,
"boost_mode" => "multiply"

** Полный запрос — это не работает **

$param = json_encode(
array(
"query" => array(
"function_score" => array(
"query" => array(
"multi_match" => array(
"query" => $query,
"fields" => array("title^5","body"),
"fuzziness" => 1
)
),
"field_value_factor" => array(
"field" => "hits",
"modifier" => "log1p",
"factor" => 10
),
"field_value_factor" => array(
"field" => "weight",
"modifier" => "log1p",
"factor" => 3
),
"functions" => [
array("filter" => array("term" => array("doctype" => "html")), "boost_factor" => 10)
],
"max_boost" => 10,
"boost_mode" => "multiply")
),
"size" => $offset,
"from" => $start
)
);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]