ES-同词义配置

定义

  • 语主相近或相同
  • 品牌类目关联
  • 搜索它等于搜索它

配置方法

1. 进入ES第一个节点:cd node1/config/analysis-ik

添加近义词
echo '凯悦,锡伯,红桃' > vim synonyms.txt

2. 将配置得制到节点2与节点3

复制代码
cp synonyms.txt /opt/elasticsearch8.0.0/node2/config/analysis-ik/
cp synonyms.txt /opt/elasticsearch8.0.0/node3/config/analysis-ik/

3. 修改结构(定义支持同义词的门店索引结构)

要点:

增加analysis,处定义分词器
修改name的分词器

复制代码
DELETE /shop

PUT /shop
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 1,
    "analysis": {
      "filter": {
          "my_synonym_filter": {
              "type": "synonym",
              "synonyms_path": "analysis-ik/synonyms.txt"
          }
      },
      "analyzer": {
        "ik_syno":{
          "type":"custom",
          "tokenizer":"ik_smart",
          "filter":["my_synonym_filter"]
        },
        "ik_syno_max":{
          "type":"custom",
          "tokenizer":"ik_max_word",
          "filter":["my_synonym_filter"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "id":{"type":"integer"},
      "name":{"type":"text","analyzer": "ik_syno_word","search_analyzer": "ik_syno"},
      "tags":{"type":"text","analyzer": "whitespace","fielddata": true}, 
      "location":{"type":"geo_point"},
      "remark_score":{"type":"double"},
      "price_per_man": {"type":"integer"},
      "category_id":{"type":"integer"},
      "category_name":{"type": "keyword"},
      "seller_id":{"type":"integer"},
      "seller_remark_score":{"type":"double"},
      "seller_disabled_flag":{"type":"integer"}
    }
  }
}

4. 验证同义词是否载入

复制代码
GET /shop/_analyze
{
  "field":"name",
  "text":"凯悦"
}

如输出信息如下,则代表配置成功

复制代码
{
  "tokens" : [
    {
      "token" : "凯悦",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "锡伯",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "SYNONYM",
      "position" : 0
    },
    {
      "token" : "红桃",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "SYNONYM",
      "position" : 0
    }
  ]
}

5. 其他

1). 重建索引

如果结构之前就存在,要让同义词起作用,需要先删除原索引再重建结构(如上)
如果是新索引,则不需要行该步骤 .

2). 在Kibana上验证

以下会查询相同的内容

复制代码
GET /shop/_search
{
  "query": {
    "match": {
      "name": "锡伯"
    }
  }
}


GET /shop/_search
{
  "query": {
    "match": {
      "name": "凯悦"
    }
  }
}

GET /shop/_search
{
  "query": {
    "match": {
      "name": "红桃"
    }
  }
}
相关推荐
ALex_zry13 分钟前
Git 乱码文件处理全流程指南:从识别到彻底清除
git·elasticsearch·搜索引擎
Elasticsearch1 小时前
无服务器日志分析由 Elasticsearch 提供支持,推出新的低价层
elasticsearch
chenglin0161 小时前
制造业ERP系统升级方案(C#到Java)
java·开发语言·c#
疯狂的Alex2 小时前
未来20年哪几种编程语言会保持优势?哪几种编程语言会得到更广泛的应用?
java·开发语言·c++·python·c#
mailtolaozhao6 小时前
C#入门--Hello world
开发语言·c#
王维志6 小时前
C# 中的 DateTime
开发语言·c#·.net
驾驭人生7 小时前
C#中统计某个字符出现次数的最简单方法
c#
麦兜*11 小时前
Spring Boot集成方案 + Elasticsearch向量检索,语义搜索核弹
java·spring boot·python·spring·elasticsearch·spring cloud·系统架构
爱学习的小熊猫_15 小时前
在Linux上部署RabbitMQ、Redis、ElasticSearch
linux·redis·elasticsearch·中间件·rabbitmq
用手手打人15 小时前
SpringCloud -- elasticsearch(二)
大数据·elasticsearch·搜索引擎