因公司使用 ES 发现用 MYSQL 存放的字段中有一个带逗号的数据匹配不出来。在网站上找了好久,发现有一位同学写了一个带逗号的分析器,果然可以匹配出。做一下笔记,以备忘记。好记性不如烂笔头
1:新建分析器
curl -XPOST ‘http://172.18.0.4:9200/demo/?pretty’ -d ‘{ ”settings”: { ”analysis”: { ”analyzer”: { ”douhao”: { ”type”:”pattern”, ”pattern”:”,” } } } }}’ |
2:将分析器 mapping 到新的字段上(旧的字段上是无法修改 mapping),当然最好的办法是使用别名,可以零停机切换
curl -XPOST ‘http://172.18.0.4:9200/demo/_mapping/master?pretty’ -d ‘{ ”properties”: { ”master_id”: { ”type”:”string”, ”index”:”not_analyzed” }, ”serve_regions”: { ”type”:”string”, ”analyzer”:”douhao”, ”search_analyzer”:”douhao” } }}’ |
3:同步 MYSQL 的数据到 ES(或者手动添加两条数据)
curl -PUT ‘http://172.18.0.4:9200/demo/master/?pretty’ -d ‘{“master_id”:”123″,”serve_regions”:”1,2,3″}’curl -PUT ‘http://172.18.0.4:9200/demo/master/?pretty’ -d ‘{“master_id”:”321″,”serve_regions”:”1″}’curl -PUT ‘http://172.18.0.4:9200/demo/master/?pretty’ -d ‘{“master_id”:”231″,”serve_regions”:”2,3″}’ |
4:测试 http://172.18.0.4:9200/_plugin/head
参考文档