Запрос Span multi-term
Запрос span_multi позволяет вам обернуть multi term query (один из запросов wildcard, fuzzy, prefix, range или regexp) в качестве span query, чтобы его можно было вложить. Пример:
resp = client.search(
query={
"span_multi": {
"match": {
"prefix": {
"user.id": {
"value": "ki"
}
}
}
}
},
)
print(resp) response = client.search(
body: {
query: {
span_multi: {
match: {
prefix: {
'user.id' => {
value: 'ki'
}
}
}
}
}
}
)
puts response const response = await client.search({
query: {
span_multi: {
match: {
prefix: {
"user.id": {
value: "ki",
},
},
},
},
},
});
console.log(response); GET /_search
{
"query": {
"span_multi": {
"match": {
"prefix": { "user.id": { "value": "ki" } }
}
}
}
} К запросу также можно применить коэффициент усиления (boost):
resp = client.search(
query={
"span_multi": {
"match": {
"prefix": {
"user.id": {
"value": "ki",
"boost": 1.08
}
}
}
}
},
)
print(resp) response = client.search(
body: {
query: {
span_multi: {
match: {
prefix: {
'user.id' => {
value: 'ki',
boost: 1.08
}
}
}
}
}
}
)
puts response const response = await client.search({
query: {
span_multi: {
match: {
prefix: {
"user.id": {
value: "ki",
boost: 1.08,
},
},
},
},
},
});
console.log(response); GET /_search
{
"query": {
"span_multi": {
"match": {
"prefix": { "user.id": { "value": "ki", "boost": 1.08 } }
}
}
}
} Запросы span_multi могут привести к ошибке слишком большого числа узлов, если количество терминов, соответствующих запросу, превышает indices.query.bool.max_clause_count настройку поиска. Чтобы избежать неограниченного расширения, вы можете установить метод перекомпиляции запроса multi-term в top_terms_* перекомпиляцию. Или, если вы используете span_multi только с запросом prefix, вы можете активировать опцию поля index_prefixes для text поля вместо этого. Это перекомпилирует любой префиксный запрос по полю в единичный терм-запрос, который соответствует индексированному префиксу.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-span-multi-term-query.html