【问题标题】:Google App Engine - Search API index growthGoogle App Engine - 搜索 API 索引增长
【发布时间】:2017-01-15 03:45:18
【问题描述】:
我想知道如何根据插入的实体数量和信息量来估计 App Engine Search API (FTS) 索引的增长(一段时间内大小增加多少)。为此,我基本上想知道索引大小是如何计算的(取决于它取决于什么)。具体来说:
- 插入新实体时,增长(大小)是否受先前现有实体数量的影响? (即增长指数)?例如。如果我有 1000 个实体并插入 10 个,则索引将以 X 字节增长。但是,如果我有 100000 个实体并插入 10 个,它会随着 X 增加还是比 X 增加更多(指数地,比如说 10*X)?
- 字段(属性)的数量是否会以指数方式影响大小?例如。如果我有具有 2 个字段的实体 A 和具有 4 个字段的实体 B(为了数学简单,假设值相同)在添加实体 B 时,大小是否会增加实体 A 的两倍或更多?
- 我可以使用哪些其他方式来查找统计信息;应用引擎的云控制台中是否有其他工具,或者我可以通过编程方式执行此操作吗?
谢谢。
【问题讨论】:
标签:
google-app-engine
google-search-api
【解决方案1】:
您可以通过运行以下代码来检查给定索引的大小。
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 并返回使用的存储增加了多少。
【解决方案2】:
我对不同数量的实体和每个实体不同数量的索引属性进行了多次测试,这表明 api 报告的索引的估计增长不是指数的,而是线性的。
但最有趣的事实是,虽然报告的大小几乎是实时的,但从索引中删除文档后,更新可能需要 12、24 甚至 36 小时。