ElasticSearch学习(二)——ik分词及查询操作
IK分词器插件
分词:即把一段中文或者别的划分成一个个的关键字,在搜索时将自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个词看成一个词,如“李小狼”会被分为“李”,“小”“狼”,这显然是不符合要求的,我们需要安装中文分词器ik来解决这个问题。 IK提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik _max_word为最细力度划分。 下载地址:.
下载完成后在es的plugins目录下新建一个文件夹ik将解压后的文件放置到里面 重启es 开启kibana进行测试 对少年先锋队进行分词解析 使用最小颗粒切分情况如下(穷尽所有可能)(根据字典来)
字典配置
新增自己的字典项,具体格式可以参考文件中其他dic文件格式,注意编码格式修改后保存需重新启动es
Restful风格命令
基本rest命令说明,关于索引的基本操作
基础测试:先新建一个索引 使用put指定文档id方式
PUT /索引名/类型/id {请求体}
在head中查看相关信息,发现相关索引已被建立,数据也在 也可以直接只建立索引,并赋予对应索引相关属性,详细属性设置可以自行去官网查询,如此处建立一个test2的索引 同理,可以通过GET命令查看对应信息(索引或者具体文档的) 额外命令: GET _cat/indices?v 可以查看一些es中的默认配置
修改的话可以使用PUT命令不带update的,但要注意这种情况下如果请求体中的数据有遗漏则更新后的数据该值也不存在,即若修改年龄,请求体put中没有name则最终结果中name将遗失,推荐使用put 。。/_update命令对其进行修改
关于文档的基本操作
在说查询前我们先造几条数据用来备用:
- PUT 插入数据
- GET获取数据
- 更新数据PUT 注意修改数据后,数据的version号改变
- POST _update更新数据
简单的查询
q即为query,当然若为模糊匹配也是可以查到的 注意查出来的结果当中有一项score的数值,该项为结果与查询条件的匹配程度,分数越高则匹配度越高
复杂查询
再插入一条数据以供测试
查询条件在请求体中书写,如精确匹配match(此处的精确匹配指的是字段,如name字段中带有李的数据) 让结果显示指定字段_source 排序操作,使用sort参数,order指定升序还是降序 分页操作,from(从第几条数据开始),size参数(返回多少条数据)
布尔值查询
must,多条件查询,相当于sql语句where中的and 同样的有and就肯定有or,在es中or为should 此时就查出来两条数据了 查询name不是李小狼的使用must_not 对查询到的数据进行过滤,filter,如范围查询为 精确查询!term term查询是直接通过倒排索引指定的词条进程精确查找的!
-
term:直接查询精确的 match:会使用分词器解析(先分析文档,然后通过分析的文档进行查询) 使用方法和match类似就不再演示 高亮查询 highlight
