每次执行此查询需要200毫秒以上的时间:
{
"filter": {
"term": {
"id": "123456",
"_cache": true
}
}
}
但这每次在第一次查询后每次执行只需要2-3毫秒:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"id": "123456"
}
}
}
}
}
注意在两个查询中相同的ID值。看起来第二个查询使用第一个查询的缓存结果。但是,为什么第一个查询不能使用缓存的结果本身?"_cache" : true
从第一个查询中删除不会更改任何内容。
当我使用其他ID执行第二个查询时,第一次执行该查询大约需要40毫秒,此后每次需要2-3毫秒。因此,第二个查询不仅运行速度更快,而且还缓存结果并将缓存用于后续调用。
所有这些都有解释吗?
第filter
一个请求中的顶级元素在Elasticsearch中具有非常特殊的功能。它用于过滤搜索结果而不会影响构面。为了避免干扰方面,此过滤器在结果收集过程中而不是在搜索过程中应用,这会导致其性能下降。采用顶级filter
无需方面做很少的意义,因为filtered
与constant_score
查询通常提供更好的性能。如果filtered
查询的冗长match_all
困扰您,您可以将第二个请求重写为等效constant_score
查询:
{
"query": {
"constant_score": {
"filter": {
"term": {
"id": "123456"
}
}
}
}
}
我正在LDAP服务器上工作。它有弹性搜索。我必须用一些Javascript代码(JSON格式)发送查询。 这是我的查询: 我试图打印所有结果,其中“server”=“server\u name”(该字段是server:server\u name…)。我认为关于弹性搜索的文档太小了。我找到了一些文档,但都是一样的,对新用户没有帮助。这个例子太简单了。 此查询返回所有结果,包括任何筛选器。 Ps:这就
我遇到了一个奇怪的问题,我向你保证我已经谷歌了很多次。 谢谢
我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢
我有一个嵌套文档,如: 据此,https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html,以上内容应匹配: } 鉴于以下情况不应出现:, 但不幸的是两者不匹配。有什么想法吗?
我在术语查询中要求弹性搜索中的嵌套字段,其中嵌套字段值应与术语查询中提供的值的数量完全匹配。例如,考虑下面的查询,在这里我们对名为类型的嵌套字段进行查询。 GET资产/_search 索引映射 样本文件: 上述查询应返回字段类型正好有2个值的文档,即“VOD”
我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?