第一种:
参考地址:http://dev.paperlesspost.com/setting-up-elasticsearch-synonyms/27
1、Add a synonyms file.
2、Create the index with setting and mappings to support synonyms.
Creating a synonyms file
config/ynonyms.txt

# synonyms.txt
sea cow => manatee
cat, feline, lolcat

Setting up index settings and mappings

POST http://localhost:9200/my_index/
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym": {
            "tokenizer": "whitespace",
            "filter": ["synonym"]
          }
        },
        "filter": {
          "synonym": {
            "type": "synonym",
            "synonyms_path": "synonyms.txt",
            "ignore_case": true
          }
        }
      }
    }
  },
  "mappings": {
    "animal": {
      "properties": {
        "name": {
          "type": "String",
          "analyzer": "synonym"
        },
        "type": {
          "type": "String",
          "analyzer": "synonym"
        }
      }
    }
  }
}

Bonus: Refreshing synonyms file

curl -XPOST 'localhost:9200/my_index/_close'
curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
"index" : {
"analysis.filter.synonym.synonyms_path" : "synonyms.txt"
}
}'
curl -XPOST 'localhost:9200/my_index/_open'

第二种(支持动态更新):

elasticsearch.yml最后添加以下内容:

index.analysis.analyzer.default.type: ik #默认分词用ik
index:
  analysis:
    filter:
      local_synonym:
          type: dynamic_synonym
          synonyms_path: dynamic-synonym/synonym.txt
          interval: 60
      remote_synonym:
          type: dynamic_synonym
          synonyms_path: http://127.0.0.1:8082/remote_ext_synonym.txt
          interval: 60
          includeIndexs: [test,music,uzai]
          excludeIndexs: [authors]
          blankSynonymWord: 0-0-b,0-0-b
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: ik
          #type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true
      ik_syno:
          type: custom
          tokenizer: ik
          filter: [local_synonym,remote_synonym]
      ik_syno_smart:
          type: custom
          tokenizer: ik
          filter: [local_synonym,remote_synonym]
          use_smart: true
      standard_syno:
          type: custom
          filter: [local_synonym,remote_synonym]
          tokenizer: standard

下载插件(支持动态更新):

https://github.com/bells/elasticsearch-analysis-dynamic-synonym

1、mvn package
2、copy and unzip target/releases/elasticsearch-analysis-dynamic-synonym-{version}.zip to your-es-root/plugins/dynamic-synonym
注意
1、我用的是elasticsearch-2.4.1,插件版本要对应上
2、dynamic-synonym和ik中的某些jar重复,这样会报错,解决方式:删除重复的jar

 

 参考:

http://www.cnblogs.com/yjf512/p/4789239.html

http://blog.csdn.net/tianzhaixing2013/article/details/51506496

http://blog.csdn.net/yusewuhen/article/details/50685685

http://11670039.blog.51cto.com/11660039/1825728



posted on 2016-12-16 10:18  kaynet  阅读(9560)  评论(1编辑  收藏  举报