要求重要条款但不返回任何内容

时间:2015-11-13 15:10:48

标签: elasticsearch elasticsearch-2.0 significant-terms

我遇到了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个文档。可能是那个吗?

2 个答案:

答案 0 :(得分:0)

  

重要的术语聚合需要一定数量的数据   变得有效,我的索引中只有163个文档。可以吧   那是吗?

如果您拥有少量文档,则使用1个分片而不是5将有所帮助。

答案 1 :(得分:0)

不确定它是否会有所帮助。尝试指定

" min_doc_count" :1