Kibana是一个针对Elasticsearch mysql的开源分析及可视化平台,使用Kibana可以`查询、查看并与存储在ES索引的数据进行交互操作自行安装
GET /_cat/indices
GET /_cat/indices?v
//返回结果说明
health status index uuid pri rep docs.count docs.deleted
健康状态 索引状态 索引 id 主分片 副本分片 文档数 删除
store.size pri.store.size
存储大小 主分片存储大小
// 创建索引
PUT /索引名
PUT /索引名
{
"settings": {
"number_of_shards": 1, # 主分片数量
"number_of_replicas": 0 # 副本分片数量
}
}
ES数据类型说明
//字符串类型 数字类型 小数类型 布尔类型 日期类型
keyword text integer long float double boolean date
//创建索引及其映射
// 创建索引及映射 注:student为索引名 id、name、age、desc 为字段名
PUT /student
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"id":{
"type": "integer"
},
"name":{
"type":"keyword"
},
"age":{
"type": "double"
},
"desc":{
"type": "text"
}
}
}
}
GET /products/_mapping
// 删除索引
DELETE /索引名
GET /student/_doc/1 (1为文档id)
GET /student/_doc/_search/
{
"query":{
"match_all":{}
}
}
// 此处 1为文档id、查询用到的就是这个id 不是下面那个id字段
POST /student/_doc/1
{
"id":1,
"name":"小明",
"age":"19",
"desc":"小明是学渣"
}
DELETE /student/_doc/1
//更新文档 不保留原字段
PUT /student/_doc/1
{
"name":"ipone"
}
//更新文档 保留原字段
POST /products/_doc/1/_update
{
"doc":{
"name":"明明"
}
}
//注:json格式必须是这样 不然会报错
POST /student/_doc/_bulk
{"index":{"_id":3}}
{"id":3,"name":"小李","age":"22","desc":"小李是混混"}
{"index":{"_id":"4"}}
{"id":4,"name":"陈陈","age":"33","desc":"陈陈是老师"}
POST /student/_doc/_bulk
{"update":{"_id":"2"}}
{"doc":{"name":"芳芳"}}
{"update":{"_id":"3"}}
{"doc":{"name":"李李"}}
POST /student/_doc/_bulk
{"delete":{"_id":"5"}}
{"delete":{"_id":"6"}}
Query DSL 利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互
说白了 这个DSL就是复杂查询 包含一些分页查询、关键字查询、排序查询等操作
// 上文介绍到 ES的字符串类型分别为 keyword text ,keyword是不会进行分词存储的,也就是只有字段类型是text的时候,
//才会出现上述情况。keyword必须用全部信息进行检索。
// desc字段是text类型,会进行分词, ES默认中文分词是按字分词 ,故文档中只要包含是这个字的都会返回
GET /student/_search
{
"query": {
"term": {
"desc": {
"value": "是"
}
}
}
}
// name 是keyword类型,故不会进行分词 必须使用全部信息检索。
GET /student/_search
{
"query": {
"term": {
"name": {
"value": "小明"
}
}
}
}
// 参数说明 gt gte lt lte
// 大于 大于等于 小于 小于等于
GET /student/_search
{
"query": {
"range":{
"age":{
"gt":"19"
}
}
}
}
//该行为与分词无关
GET /student/_search
{
"query": {
"prefix": {
"name": {
"value": "小"
}
}
}
}
// 参数说明 ? *
// 匹配一个 匹配多个
GET /student/_search
{
"query":{
"wildcard": {
"name": {
"value": "小?"
}
}
}
}
GET /student/_search
{
"query": {
"ids": {
"values": ["1","2"]
}
}
}
//bool关键字 用来组合多个条件实现复杂查询
//must:相当于&&
//should:相当于||
//must_not:相当于!不能满足任何一个
GET /student/_search
{
"query": {
"bool": {
"must": [
{
"ids":{
"values":[1,2,3,4]
}
},{
"term":{
"desc":{
"value": "小"
}
}
}
]
}
}
}
//字段分词则按分词检索。
GET /student/_search
{
"query": {
"multi_match": {
"query": "小",
"fields": ["desc","name"]
}
}
}
// 默认10条
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"size":5
}
//返回指定起始返回位置,和size实现分页
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"size":5,
"from":0
}
// 参数说明 desc 降序 asc 升序
GET /student/_search
{
"query":{
"match_all":{}
},
"sort":[
{
"age":{
"order":"asc"
}
}
]
}
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"_source":["id","desc"]
}
主页 另一篇
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
在Ruby类中,我重写了三个方法,并且在每个方法中,我基本上做同样的事情:classExampleClassdefconfirmation_required?is_allowed&&superenddefpostpone_email_change?is_allowed&&superenddefreconfirmation_required?is_allowed&&superendend有更简洁的语法吗?如何缩短代码? 最佳答案 如何使用别名?classExampleClassdefconfirmation_required?is_a
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
我正在尝试找出如何为我的Ruby项目创建一种“无类DSL”,类似于在Cucumber步骤定义文件中定义步骤定义或在Sinatra应用程序中定义路由。例如,我想要一个文件,其中调用了我的所有DSL函数:#sample.rbwhen_string_matches/hello(.+)/do|name|call_another_method(name)end我认为用我的项目特有的一堆方法污染全局(内核)命名空间是一种不好的做法。因此方法when_string_matches和call_another_method将在我的库中定义,并且sample.rb文件将以某种方式在我的DSL方法的上下文中
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功