从入门到入土05 elasticsearch

elasticsearch 全文索引

正排索引-正向索引
分词
倒排索引

1速度快
2内存大
3高可用

索引压缩法 -》压缩key
ElasticSearch索引的思路:
它是通过各种各样的变态到极致的算法还有数据结构,实现让内存中的数据
少量,然后表示更多的数据(快大),在通过跳跃表的方式实现快速的根据
我们联合查询的多个集合,找到交集,并集,还有差集

ES 最多支持32G的内存;用分布式解决:可以 扩容,缩容,多个节点集群

集群: 当节点不同的时候 就ping3次 如果ping3次以上 就认为node挂了;
选举:如果主节点挂了也一样 ping不同就认为master挂了。 那就重新选举,那个uuid小哪个就更有机会成为master

脑裂问题:
选举出多个master 为脑裂 因为数据写入不一致了
discovery.zen.minimum_master_nodes: 节点/2+1 是最好的,然后跟master节点同一个网段内的node放多一些基本就能解决了

负载和分片副本:

介绍

elasticsearch 初步使用步骤

es官网下载es包和kibana包然后都分别双击bat文件启动:
然后 修改config下的elasticsearch.yml

network.host: 192.168.1.201

配置为可远程访问。 本地可忽略

可以使用KiBana当做搜索工具,下载kibana直接修改config里面配置的 elastic.host的地址。 默认是注释的打开后可以直接用然后 进入bin里面点击bat启动 就可以访问了,地址是:http://localhost:5601/app/kibana#/dev_tools/console。
直接使用dev_tools工具页面。

(1)创建一个新的索引 注意这里的名字(index_test)要小写 否则创建会报错。
PUT “localhost:9200/index_test”
如果返回下面的信息,则说明索引创建成功。如果不是,则ES会返回相应的异常信息。通常可以通过异常信息的最后一项推断出失败的原因。
{
“acknowledged”: true
}
(1-1) 删除索引

DELETE /index

删除多个

DELETE /index_one,index_two
DELETE /index_*

删除所有

DELETE /_all
DELETE /*

(2)
然后直接post http://localhost:9200/faridev2/test
body里传json就可以直接将数据写入并自动创建mapping了
(2-1)
如果是自己想设定mapping那就

POST farmest24/device_data/1
{
	"settion": {
		"number_of_shards": 5,
		"number_of_replicas": 1
	},
	"mappings": {
		"device_data": {
			"properties": {
				"Id": {
					"type": "int"
				},
				"Name": {
					"type": "string"
				}
			}
		}
	}
}

相对数据库来说。 这样一个表就创建完了 然后就可以插入数据了。

按照条件进行搜索 get

http://localhost:9200/faridev/_search

按照多条件查询

{
	"query": {
		"bool": {
			"must": [{
					"term": {
						"orgId": "10190"
					}
				},
				{
					"term": {
						"measurementTypeId": "6"
					}
				},
				{
					"term": {
						"farmId": "440"
					}
				},
				{
					"term": {
						"farmRoomId": "690"
					}
				},
				{
					"range": {
						"collectTime": {
							"gt": "2021-05-01T00:03:58",
							"lt": "2021-06-30T00:17:32"
						}
					}
				}
			]
		}
	},
	"from": 100,
	"size": 200,
	"sort": [{
		"id": {
			"order": "desc"
		}
	}]
}

================按照时间段进行搜索

GET fardev/_search
{
  {
	"size": 30,
	"query": {
		"range": {
			"CollectTime": {
				"gte": "2020-05-01T01:00:00", // 最小值 
				"lt": "2020-05-01T02:00:00" // 最大值
			}
		}
	},
	"sort": [#按照字段排序 {
		"Id": {
			"order": "desc"
		}
	}]
}

查询平均值最大值最小值汇总值等统计操作========

GET faev/device_data/_search
{
  "size": 0,
  "aggs": {
    "group_by_colors": {
      "terms": {
        "field": "color"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "Value"
          }
        },
        "sum_price" : {
          "sum": {
            "field": "Value"
          }
        },
        "max_price" : {
          "max": {
            "field": "Value"
          }
        },
        "min_price" : {
          "min": {
            "field": "Value"
          }
        }
      }
    }
  }
}

//获取聚合函数汇总等数据库

POST /fardev/_search?pretty
{
  "size": 0,
  "aggs": {
    "min_id": {
      "min": {
        "field": "Id"
      }
    },
    "avg_id": {
      "avg": {
        "field": "Id"
      }
    },
    "max_id": {
      "max": {
        "field": "Id"
      }
    }
  }
}

修改字段类型为可索引 * 有的字段创建完之后es没有给创建索引 所以需要这种办法改下

PUT /fardev/_mapping?pretty
{
  "properties": {
    "Value": {  
      "fielddata": true,
      "type":"double"
    }
  }
}

// 按照时间进行,统计

POST /fardev/device_data/_search?pretty
{
  "size": 0, 
  "query":{
    "range":{
    "CollectTime":{
       "gte" :"2019-11-17T23:48:22.72", // 最小值      有e代表等于(>=)
       "lt" :"2019-11-18T03:48:22.72" //最大值
    }
  }
  },
  "aggs": {
    "min_val": {
      "min": {
        "field": "SensorVal"
      }
    },
    "avg_val": {
      "avg": {
        "field": "SensorVal"
      }
    },
    "max_val": {
      "max": {
        "field": "SensorVal"
      }
    }
  }
}

//按照时间批量删除

POST fazai_dev/device_data/_delete_by_query
{
  "query": {
    "bool": {
     "filter": {
        "range": {
          "CollectTime": {
            "lt":"2021-01-14T00:00:01",
            "gte":"2021-01-11T00:00:01"
          }
        }
      }
    }
  }
}  

多条件查询 []

POST farmzai_dev/device_data/_search
{
	"query": {
		"bool": {
			"must": [{
					"terms": {
						"OrgId": ["10190","10191"]
					}
				},
				{
					"term": {
						"FarmId": "440"
					}
				},
				{
					"term": {
						"FarmRoomId": "690"
					}
				},
				{
					"range": {
						"CollectTime": {
							"gt": "2021-05-01T00:03:58",
							"lt": "2021-06-30T00:17:32"
						}
					}
				}
			]
		}
	},
	"from": 100,
	"size": 200,
	"sort": [{
		"Id": {
			"order": "desc"
		}
	}]
}

先根据多条件进行查询,然后再根据id查询出最大的日期进行分组显示

GET farmv/devata/_search
{
	"query": {
		"bool": {
			"must": [{
					"terms": {
						"DeviceId": [10237,
                        11426,
                        10216,
                        10217,
                        10226,
                        10240,
                        10412]
					}
				}
			]
		}
	},
	"size": 0, 
    "aggs": {
        "group_by_tags": {
            "terms": { "field": "DeviceId" },
            "aggs": {
                "avg_price": {
                    "max": { "field": "CollectTime" }
                }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值