我遇到了Elasticsearch(版本2.0)的问题,我试图从一堆文档中获取重要的术语,但它总是不返回任何内容。
以下是我的索引的架构:
{
"documents" : {
"warmers" : {},
"mappings" : {
"document" : {
"properties" : {
"text" : {
"index" : "not_analyzed",
"type" : "string"
},
"entities": {
"properties": {
"text": {
"index": "not_analyzed",
"type": "string"
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1447410095617",
"uuid" : "h2m2J9sJQaCpxvGDI591zg",
"number_of_replicas" : "1",
"version" : {
"created" : "2000099"
},
"number_of_shards" : "5"
}
},
"aliases" : {}
}
}
因此,这是一个包含未分析的字段text
的简单索引,以及包含单个字段的字典entities
的数组:text
,未分析两者都不是。
我想要做的是匹配一些文档并从相关实体中提取最重要的术语。为此,我使用通配符,然后使用聚合。
以下是我通过curl
发送的请求:
curl -XGET 'http://localhost:9200/documents/_search' -d '{
"query": {
"bool": {
"must": {"wildcard": {"text": "*test*"}}
}
},
"aggregations" : {
"my_significant_terms" : {
"significant_terms" : { "field" : "entities.text" }
}
}
}'
不幸的是,即使Elasticsearch正在攻击某些文档,重要术语聚合的桶也总是空的。
我也尝试将analyzed
代替not_analyzed
,但我得到了相同的空结果。
首先,这样做是否相关?
我是Elasticsearch的初学者,那么,您能解释一下重要的术语聚合是如何工作的吗?
最后,如果它是相关的,为什么我的查询不起作用?
编辑:我刚刚在Elasticsearch文档中看到,重要的术语聚合需要一定数量的数据才能生效,而我的索引中只有163个文档。可能是那个吗?答案 0 :(得分:0)
重要的术语聚合需要一定数量的数据 变得有效,我的索引中只有163个文档。可以吧 那是吗?
如果您拥有少量文档,则使用1个分片而不是5将有所帮助。
答案 1 :(得分:0)
不确定它是否会有所帮助。尝试指定
" min_doc_count" :1