在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ Elasticsearch, 使用ik分詞后,聚合查詢的結(jié)果是小寫字母?

Elasticsearch, 使用ik分詞后,聚合查詢的結(jié)果是小寫字母?

字段值為'AA'時,聚合查詢的結(jié)果是'aa',怎樣得到原值?

進(jìn)行如下查詢:

POST /113/_search
{
  "query": {
    "query_string": {
      "query": "Jack"
    }
  }, 
    "aggs" : {
      "gender" : {
        "terms" : {
        "field" : "gender"
        }
      },
      "grade" : {
        "terms" : {
            "field" : "grade",
            "order" : {"_count" : "asc"}
        }
      }
    }
}

得到結(jié)果:

{
  "hits": {
    "total": 4,
    "max_score": 1.3862944,
    "hits": [
      {
        "_index": "113",
        "_type": "default_type",
        "_id": "1",
        "_score": 0.07419574,
        "_source": {
          "name": "Tome Jack",
          "grade": "AA",
          "gender": 1
        }
      }
    ]
  },
  "aggregations": {
    "grade": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "b",
          "doc_count": 1
        },
        {
          "key": "c",
          "doc_count": 1
        },
        {
          "key": "aa",
          "doc_count": 2
        }
      ]
    }
  }
}

grade字段設(shè)置如下

      "grade": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        },
        "analyzer": "ik_max_word",
        "fielddata": true
      },

grade字段的值在聚合查詢中被改變了,怎樣得到原值?

回答
編輯回答
氕氘氚

查詢分組的時候,用keyword類型進(jìn)行處理,不然會按照分詞之后的結(jié)果進(jìn)行分組。ES早期版本不會提示這種方式的異常,但是從ES5開始就會提示,并推薦用Significant Terms Aggregation進(jìn)行處理。

按照你的描述,理解上應(yīng)該是對grade字段進(jìn)行全文分組,grade的分組對應(yīng)字段設(shè)置為grade.keyword。這塊改寫為:

POST /113/_search
{
  "query": {
    "query_string": {
      "query": "Jack"
    }
  }, 
    "aggs" : {
      "gender" : {
        "terms" : {
        "field" : "gender"
        }
      },
      "grade" : {
        "terms" : {
            "field" : "grade.keyword",
            "order" : {"_count" : "asc"}
        }
      }
    }
}
2017年8月3日 19:14