zoukankan      html  css  js  c++  java
  • elasticsearch ik同义词

    由于elasticsearch 更新实在太快,配置同义词的资料层次不齐,费尽千辛万苦终于找到了。本文通过一个同义词搜索的简单实例来说明ik同义词的配置。

    环境介绍

    这点很重要,本文是基于elasticsearch7.1.1,ik7.1.1。

    配置同义词文件

    上传文件的路径位于 es 安装路径的 config 下,新建 analysis 文件夹,并新建 synonym.txt 文件。
    此处我是通过配置docker-compose 完成文件挂载,可以简单参考。

    version: '3'
    services:
      es:
        build: .
        image: es
        container_name: master
        environment:
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        volumes:     
          - ./elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
          - ./elasticsearch/config/analysis/synonym.txt:/usr/share/elasticsearch/config/analysis/synonym.txt
          - esdata:/usr/share/elasticsearch/data
          - eslogs:/usr/share/elasticsearch/logs
        ports:
          - 9200:9200
          - 9300:9300
    

    synonym.txt

    西红柿,番茄
    

    创建index

    在kibana下输入

    PUT /goods
    {
    	"settings": {
    		"number_of_shards": 1,
    		"number_of_replicas": 0,
    		"analysis": {
    			"filter": {
    				"word_sync": {
    					"type": "synonym",
    					"synonyms_path": "analysis/synonym.txt"
    				}
    			},
    			"analyzer": {
    				"ik_sync_smart": {
    					"filter": [
    						"word_sync"
    					],
    					"type": "custom",
    					"tokenizer": "ik_smart"
    				}
    			}
    		}
    	},
    	"mappings": {
    
    		"properties": {
    			"goodsName": {
    				"type": "text",
    				"analyzer": "ik_sync_smart",
    				"search_analyzer": "ik_sync_smart"
    			},
    			"goodsContent": {
    				"type": "text",
    				"analyzer": "ik_sync_smart",
    				"search_analyzer": "ik_sync_smart"
    			}
    		}
    	}
    }
    

    插入数据

    POST /goods/_doc/1
    {
    	"goodsName": "西红柿",
    	"goodsContent": "新疆的西红柿"
    }
    

    查询测试

    POST /goods/_doc/_search
    {
      "query": {
        "match": {
          "goodsContent": "番茄"
        }
      }
    }
    

    返回西红柿结果。
    实际应用场景下仅需修改index 即可。

  • 相关阅读:
    php5.3连接sqlserver2005
    U盘文件名称变成乱码的解决方法
    sql小计汇总 rollup用法实例分析(转)
    关于document.all.item遇到IE8时无法正常取到数据
    jQuery 库中的 $() 是什么?
    JavaScript内置可用类型
    jquery中$.get()提交和$.post()提交有区别吗?
    什么是CDN?哪些是流行的jQuery CDN?使用CDN有什么好处?
    说一说Servlet的生命周期?
    request.getAttribute()和 request.getParameter()有何区别?
  • 原文地址:https://www.cnblogs.com/zenan/p/11458921.html
Copyright © 2011-2022 走看看