Elastic Search Nest研究(二)--增删改查入门

增删改查入门

使用postman工具进行一系列的入门操作

索引
1. 创建索引

PUT http://localhost:9200/news 配置分片1 副本0,先进行单机测试。

2. 删除索引

DELETE请求http://localhost:9200/news

分词
1. 测试默认分词效果

POST请求http://localhost:9200/news/_analyze 可以测试news索引库的默认分词效果

可以看出对于汉字的分词是每一个字都被分开的,对于我们汉语的使用习惯来说,我们更希望按照常见的词语来进行分组,这时候我们就需要一个ik分词器的插件

2. 安装ik插件

ik分词器(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)

下载对应版本的zip包后直接解压到es安装目录下的plugins目录下,并且重命名为ik目录。

这里我们还是下载7.0版的分词器,对应于7.0版本的es

重新启动es加载ik插件

3. 测试ik分词效果

POST请求http://localhost:9200/news/_analyze 测试下ik分词的效果

ik分词的两种模式

  • ik_max_word

    会将文本做最细粒度的拆分,如将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

  • ik_word

    会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

映射
1. 映射的概念和数据类型

创建映射其实就是向索引库创建field的过程。既然是创建字段(field)就要同时指定好字段的类型。

es中常见的字段类型如下:

针对我们经常使用到的字符串类型text进行如下的解析

1) analyzer属性指定分词器默认是'standard'

如下是指定使用ik细粒度分词

"name": { "type": "text", "analyzer":"ik_max_word" }

索引和搜索的分词器也可以分开

如下表示在索引的时候使用ik_max_word搜索的时候使用ik_smart分词器

"name": { "type": "text", "analyzer":"ik_max_word", "search_analyzer":"ik_smart" }

2) index属性指定是否索引

2. 创建映射

POST请求http://localhost:9200/news/_mapping

{
    "properties": {
    	 "id": {
            "type": "long"
        },
        "title": {
            "type": "text",
            "analyzer": "ik_max_word",
            "search_analyzer": "ik_smart"
        },
         "content": {
            "type": "text",
            "analyzer": "ik_max_word",
            "search_analyzer": "ik_smart"
        },
         "author": {
            "type": "keyword"
    	 },
         "createTime": {
            "type": "date",
            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
    }
}

3. 查询映射

GET请求http://localhost:9200/news/_mapping

document 文档
1. 添加文档

2. 文档简单查询

简单查询就是通过url传递查询参数,发送get请求到es进行查询

格式:get ../_search?q=.....

q是搜索字符串

  • 根据Id查询,因为我们创建了id字段的,因此不使用默认的id

    GET http://localhost:9200/news/_doc/_search?q=id:1

  • 查询所有

    GET http://localhost:9200/news/_doc/_search

  • 查询title中包含开发的记录

    GET http://localhost:9200/news/_doc/_search?q=title:开发

  • 查询author是lucy的记录

    GET http://localhost:9200/news/_doc/_search?q=author:lucy

3. 查询结果解析
{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 0.2876821,
        "hits": [
            {
                "_index": "news",
                "_type": "_doc",
                "_id": "890E_3YBGmz_qzUptekm",
                "_score": 0.2876821,
                "_source": {
                    "id": 1,
                    "title": "Bootstrap开发",
                    "content": "Bootstrap是由Twitter 推出的一个前台页面开发框架,是一个非常流行的开发框架,此框架集成了多种页面效果。此开发框架包含了大量 的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精 美界面效果。",
                    "author": "lucy",
                    "createTime": "2020-12-25"
                }
            }
        ]
    }
}

took:本次操作花费的时间,单位为毫秒。

timed_out:请求是否超时

_shards:说明本次操作共搜索了哪些分片

hits:搜索命中的记录

hits.total : 符合条件的文档总数

hits.hits :匹配度较高的前N个文档

hits.max_score:文档匹配得分,这里为最高分

_score:每个文档都有一个匹配度得分,按照降序排列。

_source:显示了文档的原始内容。

原文地址:https://www.cnblogs.com/lucyliang/p/14298938.html