【问题标题】:Elasticsearch count terms Ignore casesElasticsearch 计数术语 忽略案例
【发布时间】:2015-10-09 19:27:36
【问题描述】:

以下是我的汇总。

{
    "size": 0,
    "aggs": {
        "cities": {
            "terms": {
               "field": "city.raw"
           }
    }
}

映射

"properties": {
    "state" : {
      "type": "string",
      "fields": {
        "raw" : {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }

效果很好。但它会考虑区分大小写对字段进行分组。

例如。

{
    "key": "New York",
    "doc_count": 45
},
{
    "key": "new york",
    "doc_count": 11
},
{
    "key": "NEW YORK",
    "doc_count": 44
}

我希望结果是这样的

{
    "key": "new york",
    "doc_count": 100
}

【问题讨论】:

标签: c# elasticsearch lucene aggregation nest


【解决方案1】:

我认为问题在于你使用索引字符串的原始版本

city.raw

您没有任何已分析的文件版本吗? 如果你也把字段的映射放在例子中应该很好。

更新:您应该根据需要使用自定义分析器。分词器应该是关键字和过滤器小写。然后用这个分析器索引你的数据。然后应该可以工作。

            "analyzer": {
                "my_analyzer": {
                    "type":         "custom",                       
                    "tokenizer":    "keyword",
                    "filter":       "lowercase"
                }   
            }

还有一些信息KeyWord AnalyzerCustom Analyzers

【讨论】:

  • 将映射添加到问题中。
  • 是的,谢谢。另一个小查询我是否需要重新创建索引以添加分析器,因为如果我尝试更新它,我会收到一条错误消息,指出索引已经存在。
  • 所以我用分析器重新创建了整个索引并添加了映射,然后播种了数据。如果我可以添加映射并更新它会很好
  • 是的。如果要添加新的分析器,则必须重新创建索引。
猜你喜欢
  • 2014-08-03
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多