Elasticsearch 配置同义词

配置近义词
近义词组件已经是elasticsearch自带的了,所以不需要额外安装插件,但是想要让近义词和IK一起使用,就需要配置自己的分析器了。

首先创建近义词文档

在config目录下

mkdir analysis
vim analysis/synonym.txt

编辑:

i-pod, i pod, i pad => ipod,
sea biscuit, sea biscit => seabiscuit,
中文,汉语,汉字
这里可以看到近义词的写法有两种:

a,b => c
a,b,c
第一种在分词的时候,a,b都会解析成为c,然后把c存入索引中
第二种在分词的时候,有a的地方,都会解析成a,b,c,把a,b,c存入索引中
第一种方法相比之下有个主词,比较省索引。

配置elasticsearch.yml中的自定义索引,和前面的ik结合,可以这么设置:

index:
  analysis:
    analyzer:
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider
      ik_max_word:
          type: ik
          use_smart: false
      ik_smart:
          type: ik
          use_smart: true
      my_synonyms:
          tokenizer: standard
      ik_syno:
          type: custom
          tokenizer: ik
          filter: [my_synonym_filter]
      ik_syno_smart:
          type: custom
          tokenizer: ik
          filter: [my_synonym_filter]
          use_smart: true
    filter:
      my_synonym_filter:
          type: synonym
          synonyms_path: analysis/synonym.txt
上面的配置文件创建了一个filter: my_synonym_filter, 然后创建了两个自定义analyzer: ik_syno和ik_syno_smart

启动elasticsearch:
bin/elasticsearch
案例测试
按照上面的配置,我们使用一个具体的句子进行测试:

120.55.72.158:9700/elasticsearchtest2
{
"index" : {
"analysis" : {
"analyzer" : {
"ik_syno" : {
"tokenizer" : "ik",
"filter" : ["my_synonym_filter"]
}
}
}
}
}

curl -XPOST "192.168.33.10:9200/elasticsearchtest/_analyze?analyzer=ik_syno" -d ‘we are eng man i pad 汉语文字‘
返回json结构:

{
    "tokens": [
        {
            "token": "we",
            "start_offset": 0,
            "end_offset": 2,
            "type": "ENGLISH",
            "position": 1
        },
        {
            "token": "eng",
            "start_offset": 7,
            "end_offset": 10,
            "type": "ENGLISH",
            "position": 2
        },
        {
            "token": "man",
            "start_offset": 11,
            "end_offset": 14,
            "type": "ENGLISH",
            "position": 3
        },
        {
            "token": "ipod",
            "start_offset": 15,
            "end_offset": 20,
            "type": "SYNONYM",
            "position": 4
        },
        {
            "token": "中文",
            "start_offset": 21,
            "end_offset": 23,
            "type": "SYNONYM",
            "position": 5
        },
        {
            "token": "汉语",
            "start_offset": 21,
            "end_offset": 23,
            "type": "SYNONYM",
            "position": 5
        },
        {
            "token": "汉字",
            "start_offset": 21,
            "end_offset": 23,
            "type": "SYNONYM",
            "position": 5
        },
        {
            "token": "文字",
            "start_offset": 23,
            "end_offset": 25,
            "type": "CN_WORD",
            "position": 6
        }
    ]
}
这里就可以看到我们之前配置的东西都成功了:

are字被过滤,是由于are字是stop_words
i pad这个词语被转化为了ipod是由于近义词字典中我们设置了 i pad=>ipod
“文字”两个中文字是被分成一个中文词切割,是因为ik的默认main.dic里面有文字两个字
“中文”“汉字”“汉语”三个词出现是由于近义词字典中我们设置了这三个为同等级的近义词

参考文献:

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

时间: 2024-08-11 18:52:33

Elasticsearch 配置同义词的相关文章

[大数据]-Logstash-5.3.1的安装导入数据到Elasticsearch5.3.1并配置同义词过滤

阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置,前面介绍了ES,Kibana5.3.1的安装配置,以及IK分词的安装和同义词设置,这里主要记录Logstash导入mysql数据到Elasticsearch5.3.1并设置IK分词和同义词.由于logstash配置好JDBC,ES连接之后运行脚本一站式创建index,mapping,导入数据.但是如果我们要配置IK分词器就需要修改创建index,mapping的配置,下面详细介绍. 一.Log

elasticsearch 使用同义词

elasticsearch 使用同义词 使用环境 elasticsearch5.1.1 kibana5.1.1 同义词插件5.1.1 安装插件 下载对应的elasticsearch-analysis-dynamic-synonym-5.1.1.zip, 解压到本地的elasticsearch/plugins目录下, 重新启动es 第一种方式本地文件 说明: 对于本地文件:主要通过文件的修改时间戳(Modify time)来判断是否要重新加载 在elasticsearch/config目录下,建立

ElasticSearch 配置详解

配置文件位于es根目录的config目录下面,有elasticsearch.yml和logging.yml两个配置,主配置文件是elasticsearch.yml,日志配置文件是logging.yml,elasticsearch调用log4j记录日志,所以日志的配置文件可以按照默认的设置,我来介绍下elasticsearch.yml里面的选项. cluster.name: elasticsearch配置的集群名称,默认是elasticsearch,es服务会通过广播方式自动连接在同一网段下的es

Elasticsearch配置参数介绍

Elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml.第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了.下面主要讲解下elasticsearch.yml这个文件中可配置的东西. cluster.name:elasticsearch配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如

ELK 做日志分析(filebeat+logstash+elasticsearch)配置

利用 Filebeat去读取日志发送到 Logstash ,再由 Logstash 处理后发送给 Elasticsearch . 一.Filebeat 项目日志文件: 利用 Filebeat 去读取文件,paths 下面配置路径地址,Filebeat 会自动去读取 /data/share/business_log/TA-*/debug.log 文件 #=========================== Filebeat prospectors ========================

ElasticSearch——Logstash输出到Elasticsearch配置

位置 在Logstash的.conf配置文件中的output中配置ElasticSearch 示例: output { elasticsearch{ action => "index" index => "%{[fields][product_type]}-transaction-%{+YYYY-MM}" hosts => ["10.0.xx.xx:9200", "10.0.xx.xx:9200", &quo

[大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤

fscrawler是ES的一个文件导入插件,只需要简单的配置就可以实现将本地文件系统的文件导入到ES中进行检索,同时支持丰富的文件格式(txt.pdf,html,word...)等等.下面详细介绍下fscrawler是如何工作和配置的. 一.fscrawler的简单使用: 1.下载: wget https://repo1.maven.org/maven2/fr/pilato/elasticsearch/crawler/fscrawler/2.2/fscrawler-2.2.zip 2.解压: 

ElasticSearch配置安装中遇到的问题

0.启动elasticSearch 这里需要注意的是,es 规定 root 用户不能启动 es,所以需要创建一个用户来启动 es # 创建用户名为 es 的用户 useradd es -p # 设置 es 用户的密码 passwd es # 将 /usr/local/elasticsearch-5.2.0 的拥有者设置为 es chown -R es:es /usr/local/elasticsearch-5.2.0 # 创建 es 的 data 和 logs 目录 mkdir -p /data

elasticsearch配置详解

ES的默认的很多参数都是不需要改的,当遇到性能问题时首先应该考虑的是增加节点,和优化数据结构.下面列举一些需要注意的配置项,首先是一般大家都知道的配置项: cluster.name: elasticsearch_production 集群名称还是要改一下,不要使用默认的,万一在哪个内网,然后一台测试的笔记本开启了ES不是自动就加入了集群. node.name: elasticsearch_005_data 节点名称, path.data: /path/to/data1 数据存储路径 path.l