elasticsearch 的filter cache (search 技术的冰山一角)

当你发了一个query, 例如 select * from t where a=1; 那么他就会在a 这个field 上创建一个bitmap 的filter cache 用于记录a 这个field 的值是否为1, es 会维护这个cache, 对于符合a=1的document, bit 位会被设为1。 否则设为0.

如何使用filter cache:
仅仅使用filterd 的请求才能使用 filter cache.
ES 使用DSL 来发请求。 但search api 使用的是一个query, 而不是filter, 所以如果想使用filter, DSL 的请求应该是:
GET /my_store/products/_search
{
"query" : {
"filtered" : {
"filter" : {
"term" : {
"price" : 20
}
}
}
}
}

filter 的更多阅读:

  1. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_finding_exact_values.html
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/filter-caching.html
posted @ 2015-01-20 11:09  zhifan  阅读(1343)  评论(0)    收藏  举报