ES中使用IK分词,统计词频!

1.查询分词结果

  http://localhost:9200/[索引名]/ _analyze    POST
  {
   "analyzer": "standard",//es默认分析,对英文很好分词,中文全部拆分成单个字进行索引--》IK分词了解一下:ik_smart、ik_max_word
   "text": "晚点"
  }	

2.设置ik分词:
一、即将创建的索引使用全局setting设置ik分词器:

 http://localhost:9200/index  PUT 
 {"settings":{"index":{"analysis.analyzer.default.type":"ik_max_word"}}}

3.对于yyyy-MM-dd HH:mm:ss格式的数据存储[使用date类型,转成long型存储],因为es目前date类型只支持yyyy-MM-dd和2015-01-01T12:10:30Z两种格式,无法存入yyyy-MM-dd HH:mm:ss,lucene底层其实也是格式化成long型存储的,建议选择date类型或者long型存储时间!

4.kibana中调用如下命令:

#查询点评内容分词词频统计

GET socialcontent/words/_search
{  
"size" : 0,  
"aggs" : {   
    "messages" : {   
        "terms" : {   
           "size" : 1000,
           "field" : "content",
            "include" : "[\u4E00-\u9FA5][\u4E00-\u9FA5]",//两个文字的词(可选)
            "exclude" : "女.*"//过滤含有女的(可选)
        }  
    }  
  },
 "highlight": {
 "fields": {
  "desc": {}
  }
 }
}

#设置属性为fielddata=true

POST star/_mapping/haha
{
    "properties": {
        "content": {
            "type": "text",
            "fielddata": true
            }
        }
}

#手动创建索引类型和属性

PUT socialcontent
{
  "mappings": {
    "words": {
      "properties": {
        "commentId":{
          "type":"long"
        },
        "userId":{
          "type":"long"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word",//设置ik分词
           "fielddata" :true//设置fielddata为true,方便聚合统计,但是要小心jvm heap过高问题,会在segment中加载到heap中一直保留,小心oom!
        },
        "create_time": {
          "type": "date", 
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        },
        "update_time": {
          "type": "date", 
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}

你可能感兴趣的:(java)