Я пытаюсь создать запрос, в котором я могу принять строку, содержащую строки и числа, и искать эти значения в полях моего индекса, которые содержат двойные значения и строки. Например:
Поля: Double doubleVal, String stringVal0, String stringVal1, String doNotSearchVal
Пример строки поиска: "person 10"
Я пытаюсь получить все документы, содержащие"person" или "10" в любом из полей doubleVal, stringVal0 и stringVal1. Это мой пример запроса:
{
"query": {
"multi_match" : {
"query": "person 10",
"fields" : [
"doubleVal^1.0",
"stringVal0^1.0",
"stringVal1^1.0"
],
"type" : "best_fields",
"operator" : "OR",
"slop" : 0,
"prefix_length" : 0,
"max_expansions" : 50,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : true,
"fuzzy_transpositions" : true,
"boost" : 1.0
}
}
}
(Этот запрос был создан Spring Data Elastic)
Когда я запускаю этот запрос, я получаю эту ошибку: (Я удалил любую идентифицирующую информацию)
{
"error": {
"root_cause": [
{
"type": "query_shard_exception",
"reason": "failed to create query: [query removed]",
"index_uuid": "index_uuid",
"index": "index_name"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "index_name",
"node": "node_value",
"reason": {
"type": "query_shard_exception",
"reason": "failed to create query: [query removed]",
"index_uuid": "index_uuid",
"index": "index_name",
"caused_by": {
"type": "number_format_exception",
"reason": "For input string: \"person 10\""
}
}
}
]
},
"status": 400
}
Я не хочу разбивать строку поиска. Если есть способ переписать запрос так, чтобы он работал ожидаемым образом, я бы хотел сделать это таким образом.