ZHE知识库 ZHE知识库
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
  • Redis
  • RabbitMQ
  • ElasticSerach
    • IK分词器
    • 基础概念
    • 操作索引库
  • 中间件
张涵哲
2024-01-23
目录

ElasticSerach

# IK分词器

下载解压到plugins目录下即可,两种主要分词模式:ik_smart最少切分,ik_max_word最细切分

// 测试分词器的分词效果
POST /_analyze
{
  "text": "可以用这句话来测试ik分词器的分词效果",
  "analyzer": "ik_smart"
}

可以通过修改config/IKAnalyzer.cfg.xml配置文件,指定本地词库和网络词库,用于分词和屏蔽词

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">ext.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords">stopwords.dic</entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

# 基础概念

Mapping

  • type:指定字段的数据类型
    • 字符串类型:text 可拆分的文本,keyword 精确值
    • 数值类型:long,integer,short,byte,double,float
    • 布尔类型:boolean
    • 日期类型:date
    • 对象类型:object
    • 地理坐标:geo_point 点坐标,geo_shape 区域坐标
  • index:是否创建倒排索引,查询排序过滤都会依赖倒排索引,默认为 true
  • analyzer:使用哪种分词器,适用于 text 可拆分文本类型,默认 standard
  • properties:当类型为 object 对象时,可以用该属性配置有哪些子字段
  • copy_to:复合搜索,同时搜索多个字段,需要在多个字段中配置 copy_to 然后指定名称,最后单独配置名称

# 操作索引库

索引库操作 index

// 新增索引库
PUT /heima
{
  "mappings": {
    "properties": {
      "info": { "type": "text", "analyzer": "ik_smart" },
      "email": { "type": "keyword" },
      "name": {
        "type": "object",
        "properties": {
          "firstName": { "type": "keyword" },
          "lastName": { "type": "keyword" }
        }
      }
    }
  }
}
// 删除索引库
DELETE /heima
// 修改索引库(索引库不允许修改,只能增加映射字段)
PUT /heima/_mapping
{
  "properties": {
    "key": { ... }
  }
}
// 查看索引库
GET /heima

文档操作 document

// 新增文档,强烈建议带上id,不带id会自动生成
POST /heima/_doc/1
{
  "info": "黑马程序员高级讲师",
  "email": "zy@itcast.cn",
  "name": {
    "firstName": "赵",
    "lastName": "云",
  }
}
// 删除文档
DELETE /heima/_doc/1
// 修改文档 全量更新,先删除原文档在重新插入新文档,没有文档会执行插入操作
PUT /heima/_doc/1
{
  "info": "黑马程序员高级讲师",
  "email": "zy@itcast.cn",
  "name": {
    "firstName": "赵",
    "lastName": "云",
  }
}

// 修改文档 局部更新,更新文档中某个字段
POST /heima/_update/1
{
  "email": "zy@itcast.cn"
}
// 查看文档
GET /heima/_doc/1
上次更新: 2024-06-19, 23:33:40
RabbitMQ

← RabbitMQ

Theme by Vdoing | Copyright © 2023-2025 Zhe | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式