温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

elasticsearch的使用示例分析

发布时间:2021-10-21 15:07:27 来源:亿速云 阅读:182 作者:柒染 栏目:大数据

elasticsearch的使用示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Elasticsearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

一、基本概念:

1.索引(index)

是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。可以把索引看成关系型数据库的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个 分片可以有多个副本(replica)。

2.文档(document)

存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库 表中的一行记录。

3.Mapping

Mapping是对类型中的文档中的每个字段进行预先定义数据类型等功能,如定义文档中的某个字段为整形,使用什么分析器,是否可搜索等,一个索引可以定义多个mapping。

二、基本操作:

1.新增索引并设置 mapping

PUT请求 http://ip:9200/索引名称/body体如下{    "settings": {"number_of_shards": 3,"number_of_replicas": 1},    "mappings": {        "properties": {            "video_like": {"type": "long"},            "video_date": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},            "video_title": {"analyzer" : "ik_smart","type": "text"},            "video_comment": {"type": "long"},            "share_conut": {"type": "long"},            "video_img_url": {"type": "text"},            "video_url": {"type": "text"},            "type_id": {"type": "long"},            "updata_time": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},            "user_id":{"type":"long"}        }    }}

number_of_replicas 是数据备份数,如果只有一台机器,设置为0,number_of_shards  是数据分片数,默认为5,有时候设置为3。

2.对已存在的索引新增 mapping 字段


PUT请求 http://ip:9200/index/_mapping
{    "properties":{        "name":{            "type":"text"        }    }}

index为你索引库的名称。body 里写的是要新增的字段名称和字段类型,上面的例子是新增 name 字段,类型为 text 。

3.判断某个字段是否为空


http://ip:9200/index/_search
{    "query": {        "bool": {                  "must_not": {                "exists": {                    "field": "label"                }            }        }    }}

向es插入数据时,如果某个字段为空,我就没有对该字段写入值,所以判断某个字段是否为空值,直接判断这个字段是否存在即可。用 exists 判断某个字段是否存在,这个例子是判断 label 的值是否为空

4.must 多个条件

http://ip:9200/index/_search
{    "query": {        "bool": {            "must": [                {                    "range": {                        "video_date": {                            "gte": "now-24h+8h",                            "lte": "now+8h"                        }                    }                },                {                    "exists": {                        "field": "label"                    }                }            ]        }    }}

must 多个条件时,对应的参数类型是列表。上面的例子: 查找必须是video_date 在某个时间范围,并且 label 字段存在的结果。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI