当前位置:   article > 正文

Elasticsearch(ES) 创建带有分词器规则的索引

Elasticsearch(ES) 创建带有分词器规则的索引

上文 Elasticsearch(ES) 下载添加IK分词器 带大家 下载 并使用了 IK 分词器
我们先启动 ES 服务
在这里插入图片描述
然后 我们来说 IK分词器 怎么用

设置分词器 我们还是要发put请求 创建索引时 通过参数设置
这里 我们put请求 类型要换成 json的
在这里插入图片描述
我们先加一个这样的模板

{
    "mappings": {
        "properties": {
            
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们数据结构的配置 都是在 mappings中的
properties 是指 装在的所有属性描述

然后 我们来写第一个属性 id

{
    "mappings": {
        "properties": {
            "id": {
                "type": "keyword"
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这个id的type 并不是java的类型 而是 ES的类型 keyword 表示 可以根据id进行查询
在这里插入图片描述
如果 你不希望id参与查询
我们下面加个 index 给false 就好了
在这里插入图片描述
但 我们这明显是要参与查询的 将index 属性去掉
在这里插入图片描述
然后 我们就可以设置它的其他属性了

"name": {
    "type": "text",
   "analyzer":"ik_max_word"
},
"describe": {
   "type": "text",
   "analyzer":"ik_max_word"
},
"type": {
   "type": " keyword"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里 我们设置 name和describe type类型都是 text 表示这是一段文本信息
然后 analyzer 表示分词器 ik分词器的地址就是 ik_max_word
然后 又来了个type字段
在这里插入图片描述
最后 还有一个东西 要设置
例如 我们输入一个 springboot 那么 系统就蒙了 你是要在 name还是analyzer 中去找这个关键字?
但是 我们希望的是 只要有任何一个包含 就能查出来

我们将代码改成这样

{
    "mappings": {
        "properties": {
            "id": {
                "type": "keyword"
            },
            "name": {
                "type": "text",
                "analyzer":"ik_max_word",
                "copy_to": "all"
            },
            "describe": {
                "type": "text",
                "analyzer":"ik_max_word",
                "copy_to": "all"
            },
            "type": {
                "type": "keyword"
            },
            "all": {
                "type": "text",
                "analyzer":"ik_max_word"
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

加了一个字段 all type给text 文本信息 analyzer设置ik分词器 ik_max_word
但我们的name和describe 都设置了 copy_to 指向了 字段 all 意思是 它们拿到的数据 都会往all字段中备份一个 但是 copy_to给的数据确实是不真实存在的,主要是用于查询的
在这里插入图片描述
然后 我们点击执行
注意 如果你已经有这个 books 索引了 那么 要先删了 再执行 索引不能重复
在这里插入图片描述
OK 添加成功 我们get一下看看有没有效果

我们可以看到 mappings中的内容就是我们设置的了
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/67909
推荐阅读
相关标签
  

闽ICP备14008679号