2014-05-09 20 views
2

我终于设法让Elastic Search索引以我想要的方式工作,使用子字段和not_analyzed将某些字段的原始值编入索引。这些面是我所期望的,但是,在某些情况下,由于有空/空值这些字段的源数据,我得到的面部分这样的结果:使用弹性搜索可以消除“空白”方面吗?

"things": { 
    "_type": "terms", 
    "missing": 187, 
    "total": 12214, 
    "other": 10608, 
    "terms": [ 
     { 
      "term": "foo", 
      "count": 912 
     }, 
     { 
      "term": "", 
      "count": 532 
     }, 
     { 
      "term": "bar", 
      "count": 37 
     } 
    } 
    } 

注“”在中第二项。我可以看到为什么ElasticSearch不会自动排除此问题,因为人们可能想知道有多少文档没有该字段。但为了我的目的,我想只是没有这个返回。

是否有某种方法可以配置ElasticSearch忽略这些索引或查询中的这些内容?

+1

您是否尝试过[排除](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets -terms-facet.html#_excluding_terms)一个空字符串?不知道这是否会奏效,但请试一试。 – Thorsten

+1

不过,首先简单地从文档中删除该字段可能会更容易。在收集数据的应用程序中将其发送给ES。 – Thorsten

+0

@Thorsten:我* *可以*删除该字段,但这是一个相当深的嵌套字段在由NEST自动序列化的文档中,所以它几乎需要重写该代码,除非它有一些设置忽略空值/空字符串(我找不到)。排除是最可能的(简单)答案,我对ES很新,忘记了这个选项。 – Aaronaught

回答

4

尝试把

 "exclude" : "" 
在聚合方面

+0

我认为这应该是一个正确的答案 –