es聚合被分词的现象一般是6.x版本的(以前的版本没用过)

    es6.x后对于text类型字段需要聚合查询(类似group by)对数据进行统计分析,需要设置fielddata为true 和fields字段才能进行聚合操作。

    例:text类型字段进行聚合查询(count(*) group by) 摘自:https://www.cnblogs.com/dxf813/p/8447467.html

    需求:对机构字段既可以进行模糊查询,又可以按照字段全名进行聚合统计

    实现:

    -设置字段参数

    1. {
    2. "institution": {
    3. "type": "text",
    4. "analyzer": "ik_max_word",
    5. "search_analyzer": "ik_max_word",
    6. "fielddata": true,
    7. "fields": {
    8. "raw": {
    9. "type": "keyword"
    10. }
    11. }
    12. }
    13. }

    如果不设置keyword索引在聚合时将会使用已分解后的词。例如:想用“国泰君安”聚合,结果使用“国泰”,“君安”聚合

    -查询时aggs参数

    1. {
    2. "query": {
    3. "range": {
    4. "time": {
    5. "gte": "2018-02-01"
    6. }
    7. }
    8. },
    9. "aggs": {
    10. "institution_count": {
    11. "terms": {
    12. "field": "institution.raw"
    13. },
    14. "aggs": {}
    15. }
    16. }
    17. }

    d730d4eb-22dc-43fb-a9f1-860e90ecc61a.jpg