ElasticSearch学习笔记(五)在logstash中配置分词器和同义词过滤器

1、ik+pinyin分词器

在之前的一篇文章中配置了IK分词器,在这里说一下怎么使elasticsearch可以同时使用两个分词器:主要是参考这位老哥的http://blog.csdn.net/napoay/article/details/53907921的做法。

这里还是主要使用sense,主要是kibana还没有搞清楚具体怎么使用

PUT /medcl/
{
    "index": {
        "analysis": {
            "analyzer": {
                "ik_pinyin_analyzer": {
                    "type": "custom",
                    "tokenizer": "ik_smart",
                    "filter": ["my_pinyin", "word_delimiter"]
                }
            },
            "filter": {
                "my_pinyin": {
                    "type": "pinyin",
                    "first_letter": "prefix",
                    "padding_char": " "
                }
            }
        }
    }
}

输入这些东西,稍微解释一下子:创建一个为medcl的index,然后自定义一个分词器analyzer叫做ik_pinyin_analyzer,使用的是ik_smart进行分词,然后添加两个过滤器,一个是自定义的my_pinyin,另一个是elasticsearch原本就有的word_delimiter,my_pinyin使用的就是拼音分词器过滤的。elasticsearch自带的过滤器有很多,http://blog.csdn.net/i6448038/article/details/50625397这篇博客中写的很详细。

然后建议一个type为folks的mapping,此时使用的就是刚刚自己定义的ik_pinyin_analyzer作为分词器。

POST /medcl/folks/_mapping
{
    "folks": {
        "properties": {
            "name": {
                "type": "keyword",
                "fields": {
                    "pinyin": {
                        "type": "text",
                        "store": "no",
                        "term_vector": "with_positions_offsets",
                        "analyzer": "ik_pinyin_analyzer"     
                    }
                }
            }
        }
    }
}

往服务器中添加两条索引信息

POST /medcl/folks/andy 
{
  "name":["刘德华","刘邦"]}
POST /medcl/folks/tina
{
  "name":"中华人民共和国国歌"}

测试一下是否可以被查询到

POST /medcl/folks/_search
{
  "query": {
    "match": {
      "name.pinyin": "国歌"#改成zhonghua测试拼音的是否通过
    }
  },
  "highlight": {
    "fields": {
      "*": {}
    }
  }
}

查询到的结果长这样子:

{
   "took": 7,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 2,
      "max_score": 2.6638038,
      "hits": [
         {
            "_index": "medcl",
            "_type": "folks",
            "_id": "tina",
            "_score": 2.6638038,
            "_source": {
               "name": "中华人民共和国国歌"
            },
            "highlight": {
               "name.pinyin": [
                  "<em>中华人民共和国</em><em>国歌</em>"
               ]
            }
         },
         {
            "_index": "medcl",
            "
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值