【Elasticsearch】track_total_hits

在 Elasticsearch 中,`track_total_hits` 是一个查询参数,用于控制是否精确计算搜索结果的总命中数(`total hits`)。默认情况下,Elasticsearch 在某些情况下可能会对总命中数进行近似计算,以提高性能。`track_total_hits` 参数允许你显式地控制这种行为。

 

背景

在 Elasticsearch 中,当查询返回大量结果时,精确计算总命中数可能会消耗较多资源。因此,Elasticsearch 在某些情况下会返回一个近似的总命中数。从 Elasticsearch 7.0 开始,`track_total_hits` 参数被引入,以提供更灵活的控制。

 

参数值

`track_total_hits` 参数可以接受以下几种值:

 

1. `true`:始终精确计算总命中数,无论结果集大小如何。

2. `false`:始终返回近似的总命中数。

3. `number`(正整数):当返回的文档数量小于或等于这个值时,精确计算总命中数;否则返回近似值。

 

默认行为

从 Elasticsearch 7.0 开始,默认行为是:

- 如果返回的文档数量小于或等于 10,000,则精确计算总命中数。

- 如果返回的文档数量超过 10,000,则返回近似的总命中数。

 

使用场景

1. 精确计算总命中数:

   如果你需要精确的总命中数,无论结果集大小如何,可以将 `track_total_hits` 设置为 `true`。例如:

   

```json

   GET /your_index/_search

   {

     "query": {

       "match_all": {}

     },

     "track_total_hits": true

   }

   ```

 

2. 近似计算总命中数:

   如果你对总命中数的精确性要求不高,可以将 `track_total_hits` 设置为 `false`,以提高查询性能。例如:

   

```json

   GET /your_index/_search

   {

     "query": {

       "match_all": {}

     },

     "track_total_hits": false

   }

   ```

 

3. 自定义阈值:

   如果你希望在返回的文档数量小于某个特定值时精确计算总命中数,可以设置一个正整数。例如,设置为 5000:

   

```json

   GET /your_index/_search

   {

     "query": {

       "match_all": {}

     },

     "track_total_hits": 5000

   }

   ```

 

注意事项

- 性能影响:精确计算总命中数可能会消耗更多资源,尤其是在数据量较大的情况下。因此,建议根据实际需求合理设置 `track_total_hits`。

- 版本差异:在 Elasticsearch 7.0 之前,`track_total_hits` 参数的行为可能略有不同。建议查阅对应版本的官方文档以获取准确信息。

 

通过合理使用 `track_total_hits` 参数,你可以根据实际需求在精确性和性能之间取得平衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值