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 字段存在的结果。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。