【发布时间】:2018-02-14 05:41:04
【问题描述】:
我在一个大型弹性搜索集群上运行以下查询。集群无响应
{
"size": 10000,
"query": {
"bool": {
"must": [
{
"regexp": {
"message": {
"value": ".*exception.*"
}
}
},
{
"bool": {
"should": [
{
"term": {
"beat.hostname": "ip-xxx-xx-xx-xx"
}
}
]
}
},
{
"range": {
"@timestamp": {
"lt": 1518459660000,
"format": "epoch_millis",
"gte": 1518459600000
}
}
}
]
}
}
}
当我删除通配符.*exception.* 并将其替换为任何非通配符字符串(如xyz)时,它会快速返回。尽管查询使用通配符表达式,但它也会查找小时间范围和特定主机。我认为这是一个非常简单的查询。弹性搜索服务器无法处理此查询的任何原因?该集群有 10 个节点和 20 TB 的数据。
【问题讨论】:
-
你试过
.*?exception.*吗?它应该更有效(和你想要的一样)。 -
谢谢@GáborBakos 我会试试的。除此之外,您是否发现查询有任何问题
-
` .*?exception.*? ` 并没有更好。
标签: elasticsearch