asticseach Как добавить тип поиска в теле запроса
У меня есть запрос, где я использую search_type как
GET /test_videos/_search?search_type=dfs_query_then_fetch&explain=true
{
"query": {
"bool": {
"must": {
"multi_match": {
"query": "funny",
"fields": ["title"]
}
}
}
}
}
который отлично работает и дает желаемый результат.
Я также могу указать объяснение в теле следующим образом:
GET /test_claim_videos/_search?search_type=dfs_query_then_fetch
{ "explain" : true,
"query": {
"bool": {
"must": {
"multi_match": {
"query": "funny",
"fields": ["title", "asset_name", "description", "tags.name", "asset_group_name.humanized", "credit"]
}
}
}
}
}
Но я хочу указать search_type как dfs_then_fetch внутри тела. Если я сделаю
GET /test_claim_videos/_search
{ "search_type" : "dfs_query_then_fetch",
"explain" : true,
"query": {
"bool": {
"must": {
"multi_match": {
"query": "funny",
"fields": ["title", "asset_name", "description", "tags.name", "asset_group_name.humanized", "credit"]
}
}
}
}
}
Это вызывает ошибку:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Unknown key for a VALUE_STRING in [search_type].",
"line": 1,
"col": 19
}
],
"type": "parsing_exception",
"reason": "Unknown key for a VALUE_STRING in [search_type].",
"line": 1,
"col": 19
},
"status": 400
}
Почему я не могу указать тип поиска в теле и как это исправить? Мне нужно, чтобы он был в теле, так как я использую сторонний жевательный камень, который не позволяет передавать URL.
2 ответа
Если кто-то знает точный ответ, пожалуйста, помогите. На данный момент я уменьшил свои шарды / индекс до 1, и это работает правильно.
К сожалению, у вас нет возможности сделать это. Вы можете прочитать больше в документации:
Из вышесказанного, search_type и request_cache должны быть переданы как параметры строки запроса.