我认为这个标题非常明显。据我所知indices-stats
只返回集合中的文档数量,而不是令牌/术语的数量。
这是关于我的索引的更多信息;它包含索引的医学出版物,其中包含以下映射:
{
u'papers': {
u'properties': {
u'article_abstract': {
u'type':
u'string'
},
u'article_sections': {
u'type':
u'string'
},
u'article_text': {
u'type':
u'string'
},
u'article_title': {
u'type':
u'string'
},
u'keyword_group': {
u'type':
u'string'
},
u'references': {
u'type':
u'string'
}
}
}
}
我正在寻找的是在索引中的所有字段中获取唯一字词数的方法。
答案 0 :(得分:0)
索引的文件大小可以从同一indices-stats api的store
字段中提取,例如
{ "docs": { "count": 1886, "deleted": 1557 }, "store": { "size_in_bytes": 519544594, "throttle_time_in_millis": 0 }, ...(skipped)
但是如果你想要一个索引的总令牌数量,我认为不存在这样的api,因为它并不意味着什么。如果您想要这个号码,我认为您需要使用script_field
和aggregation
进行计算。
修改强>
根据您的架构,令牌计数可以按如下方式计算:
{
"query" : {
"match_all" : { }
},
"aggs" : {
"summation" : { "sum" : { "script" : "doc['article_abstract'].values.length+doc['article_sections'].values.length" } }
}
}
上面的查询只是计算字段'article_abstracts'和'article_sections'的标记大小,如你所见。我不确定有没有办法不“迭代”所有字段。但无论如何,你可以继续这样做。
答案 1 :(得分:0)
如果要查找索引中的唯一术语,则需要进行查询。要返回计数,您需要使用值计数聚合 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html:
{
"aggs" : {
"grades_count" : { "value_count" : { "field" : "grade" } }
}
}
如果您想要返回给定字段的不同字词,您可以执行以下聚合搜索:
curl -XPOST "http://localhost:9200/yourindex/_search?pretty" -d'
{
"aggs" : {
"aggname" : {
"terms" : { "field" : "YourFieldName" }
}
}
}'
显然,如果你想在整个索引上返回不同的术语,我们需要一些关于你的架构的信息。