后端主体MD文集专题

ES入门研究

2020-01-13  本文已影响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

布尔查询

过滤器

排序

高亮显示

上一篇下一篇

猜你喜欢

热点阅读