elasticsearch的使用示例分析

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 字段存在的结果。

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


标题名称:elasticsearch的使用示例分析
URL网址:http://scyanting.com/article/jhches.html