我相信我正在尝试做一些非常简单的事情,但是不明白为什么我没有得到正确的结果。
在我们的Kibana的Discover
标签中,如果我想查看所有数据的历史记录(选择过去5年),则可获得约5亿次匹配。如果再添加一个简单的过滤器-database is postgres-prod
,则可获得约1.37亿次匹配,因此Discover
标签中的过滤器有效。我什至可以看到过滤器DSL(如果我要编辑过滤器),它看起来像这样:
{
"query": {
"match": {
"database": {
"query": "postgres-prod",
"type": "phrase"
}
}
}
}
现在的问题是,当我进入Kibana Dev Tools并尝试执行相同的操作时。如果仅执行match_all
查询,我的点击量将达到预期的约500M:
GET /logstash-*/_search
{
"query": {
"match_all": {}
}
}
response:
{
"took": 2347,
"timed_out": false,
"_shards": {
"total": 155,
"successful": 155,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 500708223,
"max_score": 1,
"hits": [
问题是无论我要执行什么查询,我总能获得500M匹配的结果,而不是我在发现选项卡中看到的预期的137M的结果。即使我要应用在“发现”过滤器中看到的完全相同的查询,像这样:
GET /logstash*/_search
{
"query": {
"match": {
"database": {
"query": "postgres-prod",
"type": "phrase"
}
}
}
}
response:
{
"took": 2313,
"timed_out": false,
"_shards": {
"total": 155,
"successful": 155,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 500709434,
"max_score": 1,
"hits": [
我还尝试了许多其他查询,例如该布尔查询,但始终只得到500M次点击的结果。就像我正在尝试的所有查询都被忽略
GET /logstash-*/_search
{
"query": {
"bool": {
"must": [
{ "match": {
"database": {
"query": "postgres-prod",
"type": "phrase"
}
}
}
]
}
}
}
response:
{
"took": 2338,
"timed_out": false,
"_shards": {
"total": 155,
"successful": 155,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 500714297,
"max_score": 1,
"hits": [
任何人都知道我在做什么错,为什么查询没有缩小我的搜索范围?