Как я могу запросить несколько индексов с определенными именами?
Это может быть достигнуто с помощью многоиндексного поиска , который является встроенной возможностью Elasticsearch.Для достижения описанного поведения следует попробовать запрос, подобный следующему:
POST /index_2019_01,index_2019_02/_search
{
"query": {
"match": {
"LanguageID": "English"
}
}
}
Или, используя URI search :
curl 'http://<host>:<port>/index_2019_01,index_2019_02/_search?q=LanguageID:English'
Более подробная информация доступна здесь .Обратите внимание, что Elasticsearch требует, чтобы имена индексов были строчными.
Можно ли использовать регулярное выражение для указания шаблона имени индекса?
Короче говоря, нет.Имя индекса можно использовать в запросах, используя специальное «виртуальное» поле _index
, но его использование ограничено.Например, нельзя использовать регулярное выражение для имени индекса:
_index представляется как виртуальное поле - он не добавляется в индекс Lucene как реальное поле.Это означает, что вы можете использовать поле _index в запросе терминов или терминов (или любом запросе, который переписан в запросе терминов, например запрос match, query_string или simple_query_string), но он не поддерживает префикс , подстановочный знак,регулярные выражения или нечеткие запросы.
Например, запрос сверху можно переписать так:
POST /_search
{
"query": {
"bool": {
"must": [
{
"terms": {
"_index": [
"index_2019_01",
"index_2019_02"
]
}
},
{
"match": {
"LanguageID": "English"
}
}
]
}
}
}
, который использует bool и условия запросов.
Надеюсь, это поможет!