Google App Engine - 搜索API索引增长

时间:2016-09-07 12:33:44

标签: google-app-engine google-search-api

我想知道如何根据插入的实体数量和信息量估算App引擎搜索API(FTS)索引的增长(一段时间内的大小增加多少)。为此,我想基本知道如何计算索引大小(取决于它取决于什么)。具体做法是:

  1. 插入新实体时,增长(大小)是否受先前现有实体数量的影响? (即增长是否呈指数增长)?对于前者如果我有1000个实体并插入10,则索引将以X字节增长。但是,如果我有100000个实体并插入10,它会随着X增加还是比X增加更多(指数,让'比如10 * X)?
  2. 字段数(属性)是否会以指数方式影响大小?对于前者如果我有2个字段的实体A和4个字段的实体B(为了数学简单,让它们说相同的话),当添加实体B时,大小会增加,是实体A的两倍或者远远超过实体A的两倍?
  3. 我可以用什么其他方法查找统计信息;在app引擎的云控制台中有其他工具,还是可以通过编程方式执行此操作?
  4. 谢谢。

2 个答案:

答案 0 :(得分:0)

您可以通过运行以下代码来检查给定索引的大小。

from google.appengine.api import search

for index in search.get_indexes(fetch_schema=True):
    logging.info("index %s", index.storage_usage)
# pseudo code
amount_of_items_to_add = 100
x = 0
for x <= amount_of_items_to_add:
    search_api_insert_insert(data)
    x+=1
#rerun for loop to see how much the size increased
for index in search.get_indexes(fetch_schema=True):
    logging.info("index %s", index.storage_usage)

这段代码显然不是一个完整的工作示例,但您应该能够构建一个简单的方法,将一些数据插入到搜索API中,并返回已用存储量的增加量。

答案 1 :(得分:0)

我已针对不同数量的实体和每个实体的不同数量的索引属性运行了多项测试,并且它接收到由api报告的索引的估计增长不是指数线性的。 但最有趣的事实是,虽然报告的大小几乎是实时的,但在从索引中删除文档后,更新可能需要12,24甚至36小时。