zoukankan      html  css  js  c++  java
  • 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:显示了文档的原始内容。

  • 相关阅读:
    关于用户体验的几张图片
    上下翻滚JS特效代码
    关注程序员健康之——缺失营养时的六种信号
    C#基础知识系列之——for循环
    关于程序中的需求的变化,责任的分配
    Silverlight学习之——Canvas对象
    还是觉得应该动手写点东西....
    怎样理解“道不同,不相为谋”这句话呢。。。
    UML图中最基本的是类图
    .NET中各种数据库连接大全
  • 原文地址:https://www.cnblogs.com/lucyliang/p/14298938.html
Copyright © 2011-2022 走看看