• (ElasticSearch)使用Postman工具进行Restful接口访问


    ElasticSearch的接口语法

    curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'

    1.创建索引index同时映射mapping

    请求地址,创建一个名为myindex1的索引库

    http://192.168.118.3:9200/myindex1

    请求的JSON

    { 
        "mappings":
        {
            "type1":
            { 
                "properties":
                { 
                    "id": 
                    { 
                        "type": "long",
                        "store": true, 
                        "index": false
                    },
                    "title":
                    {
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"standard" 
                        
                    },
                    "content": { 
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"standard" 
                    }
                }
            }
        }
    }              
    • type:存储的类型
    • store:代表是否保存,取值类型为boolean
    • index:代表是否进行进行分析(分词),我用的是6.2.4版本的es,其他版本可能有差异取值为"not_analyzed"或"analyzed",
    • analyzer:代表使用的分析器的类型,之后才用中文分词的时候修改此处

    elasticsearch-head查看(我这里使用的集群,默认分成5片,复制一份)

     

     查看索引信息

     2.先创建索引然后在设置Mapping(修改)

    这种情况也可以当作修改索引库

    ElasticSearch是基于Lucene开发的,他的修改的原理也是一样,先删除在添加

    只发送请求,不带json请求体

    http://192.168.118.3:9200/myindex2

     设置mapping的请求,换成POST方式请求

    http://192.168.118.3:9200/myindex2/type1/_mapping

    请求体中的json串

     {
            "type1":
            { 
                "properties":
                { 
                    "id": 
                    { 
                        "type": "long",
                        "store": true, 
                        "index": false
                    },
                    "title":
                    {
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"standard" 
                        
                    },
                    "content": { 
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"standard" 
                    }
                }
            }
        }

    请求注意要点(下图)

     3.删除索引

    删除索引比较简单,把请求方式更改为DELETE

     4.创建文档document

    POST请求

    http://192.168.118.3:9200/myindex1/type1/1

    json文档内容

    { 
        "id":1,
        "title":"ElasticSearch是一个基于Lucene的搜索服务器",
        "content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java 开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时 搜索,稳定,可靠,快速,安装使用方便。" 
    }

    响应结果

     使用elasticSearch-head查看文档

     使用相同的id再次添加视为修改,会覆盖之前的文档

    5.删除文档

    删除和创建文档的请求一样,只不过不需要json串,只是把请求方式由post更改为DELETE

    http://192.168.118.3:9200/myindex1/type1/1

    6.根据id查询文档

    根据id查询文档请求和添加删除一样,把请求方式更改为GET即可

     7.使用querystring查询文档

    POST请求

    http://192.168.118.3:9200/myindex1/type1/_search

    请求json

    {
        "query":
        {
            "query_string": 
            { 
                "default_field": "title",
                "query": "搜索服务器" 
            } 
        }
    }
    default_field:要搜索的域
    query:搜索条件

     响应结果

     将查询关键字变为"亚索",还是可以查到,应为包含了"索"字,这是应为底层的分析器的原因

    8.使用term查询

    将上次发生的json更改为term方式

    { 
        "query":
        { 
            "term": 
            { 
                "title": "搜索"
                }
        }
    }

     在使用默认的分析器,会把汉字拆分成一个一个的,搜索词语是查询不出来结果的

    IK分词器

    测试默认的分词器

    发生POST请求

    http://192.168.118.3:9200/_analyze

    JSON

    {
        "analyzer":"standard",
        "text":"中华人民共和国"
    }

    分词结果

     这样分词效果对于中文文档来说,是我们不能接受的,我们需要使用专门针对于汉字词语进行分词的分词器

    我们需要配置IK分词到Elasticsearch中,将ik分词器的包解压到plugins目录下并重新启动ES就好了

    IK提供了两个分词算法ik_smart ik_max_word
    其中 ik_smart 为最少切分,ik_max_word为最细粒度划分
    先来测试一下ik_smart最少切分
     请求路径不变更改json
    {
        "analyzer":"ik_smart",
        "text":"中华人民共和国"
    }

    分词结果

     再测试一下,ik_max_word最细粒度划分

    {
        "analyzer":"ik_max_word",
        "text":"中华人民共和国"
    }

    分词结果

     接下来使用ik分词器重建索引库,先将之前的索引库删除

     {
            "type1":
            { 
                "properties":
                { 
                    "id": 
                    { 
                        "type": "long",
                        "store": true, 
                        "index": false
                    },
                    "title":
                    {
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"ik_max_word" 
                        
                    },
                    "content": { 
                        "type": "text",
                        "store": true, 
                        "index": true,
                        "analyzer":"ik_max_word" 
                    }
                }
            }
        }

    然后再添加文档

    之后再次执行之前的查找文档

    再次搜索"亚索"

     返回结果为空,

     再执行之前的trem查询

     可以看到正常搜索出来了

    索引库

  • 相关阅读:
    docker registry
    2019最新EI源刊目录
    在Asp.net Core中使用中间件来管理websocket
    自定义WPF窗体形状
    Font Awesome矢量版,十六进制版,WPF字体使用
    什么是fortran语言之fortran语言入门
    Java各国首都列表
    世界各国货币,C#数字货币计算
    Ocelot中文文档入门
    F#语言入门之什么是F#语言
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12367600.html
Copyright © 2020-2023  润新知