ES入门研究

作者: 陆一诗 | 来源:发表于2020-01-13 18:17 被阅读0次

    什么是ES

    什么是ES.png

    ES拿来做什么用?

    Elasticsearch的用途.png

    ES常用的映射类型

    文本字段

    文本字符串包括text和keyword两种类型:

    1、text

    1.1)analyzer

    通过analyzer属性指定分词器。下边指定name的字段类型为text,使用ik分词器ik_max_word分词模式。

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

    上边指定了analyzer是指在索引和搜索都使用ik_max_word,如果想单独定义搜索时使用的分词器则可以通过search_analyzer属性。

    对于ik分词器建议是索引时使用ik_max_word将搜索内容进行细粒度分词,搜索时使用ik_smart提高搜索精确性

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

    2)index

    通过index属性指定是否索引。

    默认为index=true,即要进行索引,只有进行索引才可以从索引库搜索到。

    但是也有一些内容不需要索引,比如:商品图片地址只被用来展示图片,不进行搜索图片,此时可以将index设置为false

    删除索引,重新创建映射,将picindex设置为false,尝试根据pic去搜索,结果搜索不到数据

    "pic": {
            "type": "text",
            "index":false
    }
    

    3)store

    是否在source之外存储,每个文档索引后会在 ES中保存一份原始文档,存放在"_source"中,一般情况下不需要设置store为true,因为在_source中已经有一份原始文档了

    测试

    删除course/doc下的映射

    创建新映射:Post http://localhost:9200/course/doc/mapping

    {
    "properties": {
                "name": {
                "type": "text",
                "analyzer":"ik_max_word",
                "search_analyzer":"ik_smart"
                },
                "description": {
                "type": "text",
                "analyzer":"ik_max_word",
                "search_analyzer":"ik_smart"
                },
                "pic":{
                "type":"text",
                "index":false
                },
                "studymodel":{
                "type":"text"
                }
            }
    }
    

    插入文档http://localhost:9200/course/doc/4028e58161bcf7f40161bcf8b77c0000

    {
        "name":"Bootstrap开发框架",
        "description":"Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包
        含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的
        精美界面效果。",
        "pic":"group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg",
        "studymodel":"201002"
    }
    
    

    查询测试:

    Get http://localhost:9200/course/_search?q=name:开发
    Get http://localhost:9200/course/_search?q=description:开发
    Get http://localhost:9200/course/_search?
    

    得到q=pic:group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg

    Get http://localhost:9200/course/_search?q=studymodel:201002

    通过测试发现:namedescription都支持全文检索,pic不可作为查询条件。

    keyword关键字字段

    上边介绍的TEXT文本字段在映射时要设置分词器,keyword字段为关键字字段,通常搜索keyword是按照整体搜索,所以创建keyword字段的索引时是不进行分词的,比如:邮政编码、手机号码、身份证等。keyword字段通常用于过虑、排序、聚合等。

    测试

    。。。

    搜索管理

    准备环境

    DSL搜索

    查询所有文档

    分页查询

    Term query

    根据ID精确匹配

    Match query

    Multi query

    布尔查询

    过滤器

    排序

    高亮显示

    相关文章

      网友评论

        本文标题:ES入门研究

        本文链接:https://www.haomeiwen.com/subject/vxkvactx.html