ElasticSearch : 基础

#新建索引以及类型:
PUT http://10.18.43.3:9200/test
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 0
    },
    "mappings": {
        "type1": {
            "properties": {
                "id": {
                    "type": "long"
                    },
                "ukey": {
                    "type": "keyword"
                },
                "startid": {
                    "type": "long"
                },
                "title": {
                    "type": "text"
                },
                "fetch_time": {
                    "type": "date",
                    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                }
            }
        }
    }
}
keyword类型的字段是不可切分的,text可以分词

#插入数据: PUT http://10.18.43.3:9200/test/type1/1
{
    "key": value,
    "key2": value2
}
,如果需要自动生成id,需要把方法改成POST,然后把url改成http://10.18.43.3:9200/test/type1

#更新数据
POST http://10.18.43.3:9200/test222/type1/1/_update
{
    "doc": {
        "content":"更新content2"
    }

}
更新数据需要用POST方法而且后面要加_update,更新的字段要包含在 doc 字段里面

#删除数据
DELETE http://10.18.43.3:9200/test/type1/1

#删除索引
DELETE http://10.18.43.3:9200/test

#简单查询
GET http://10.18.43.3:9200/test/type1/1

#条件查询
POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "match_all": {}
    },
    "from": 1,
    "size": 2
}
from 是从哪一行开始,size 是查询显示多少条

POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "match": {
            "html_snapshot": "医生"
        }
    },
    "sort": [
        {
            "id": {
                "order": "desc"
            }
        }    
    ]
}
查询所有html_snapshot包含"医生"的数据,类似于模糊查询(查询html_snapshot包含"医生"的数据),需要注意这个模糊匹配会把查询条件再次分词,如
条件为"html_snapshot": "医生和护士"的话,那么很可能会分成"医生","护士"两个词来分别匹配,如果需要像SQL那样 %xxx%这种形式的模糊匹配的话,
那么需要把 "match"改为"match_phrase",这样如果匹配"医生和护士",那么会匹配里面包含 xxx医生和护士xxxx 这种类型的数据
这儿html_snapshot是text类型,如果是keyword类型的话查询结果是精确查询的结果(查询html_snapshot等于"医生"的数据)
按照id降序排列

POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "query_string": {
            "query": "(非常感谢 AND 医院) OR 医生",
            "fields": ["html_snapshot", "content"]
        }
    }
}
查询多个字段,这样查询也是会先自动分词然后进行匹配

POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "term": {
            "startid": 2
        }
    }
}
精确查询 startid == 2

POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "range": {
            "startid": {
                "gte": 2,
                "lte": 3
            }
        }
    }
}
startid 大于等于2,小于等于3的数据

POST http://10.18.43.3:9200/test/_search
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "startid": 2
                    }
                },
                {
                    "match": {
                        "html_snapshot": "客气"
                    }
                }
            ]
        }
    }
}
查询 startid必须为2(因为是keyword类型) 和 html_snapshot必须包含(text类型)"客气" 的所有数据

#聚合查询
POST http://10.18.43.3:9200/test/_search
{
    "aggs": {
        "group_by_startid": {
            "terms": {
                "field": "startid",
                "size": 3
            }
        }
    }
}
根据startid统计所有数据count,返回统计结果前3的聚合数据,size是显示3条聚合数据
可以同时统计多组聚合信息

POST http://10.18.43.3:9200/test/_search
{
    "aggs": {
        "group_by_startid": {
            "stats": {
                "field": "startid"
            }
        }
    }
}
stats是计算聚合关键字,里面有startid的总数,最大值最小值平均值总和等数据

##Elasticsearch 使用bool 子句来将各种子查询关联起来,组成布尔表达式,bool 子句可以随意组合、嵌套。

bool子句主要包括:

must:表示必须匹配。
must_not:表示一定不能匹配。
should:表示可以匹配,类似于布尔运算里的”或”。如果bool 子句里,没有must子句,那么,should子句里至少匹配一个,如果有must子句,那么,should子句至少匹配零个。可以使用minimum_should_match 来对最小匹配数进行设置。

====================================ES的快照备份查询与恢复===========================================

索引的快照过程是增量的。在创建索引快照的过程中,ElasticSearch会分析仓库中已经存在的索引文件,只拷贝那些在最后一次快照之后被创建或者更新的文件。That allows multiple snapshots to be preserved in the repository in a compact form. 快照过程以非阻塞的方式执行,所有的索引和搜索操作都可以对正在被创建快照的索引继续执行。一个快照表示的是这个索引在快照被创建时间点的索引视图,所以在索引过程开始之后被添加到索引中的记录不会出现在快照中。
(参考 https://blog.csdn.net/ale2012/article/details/82702128#_126)

需要先在elasticsearch.yml中加入  path.repo: /usr/local/backups 这个配置来配置备份文件夹 文件夹权限要设置为777

1. 创建快照仓库, 名字为all_backup
http://10.1.1.112:9200/_snapshot/all_backup   PUT
{
  "type": "fs",
  "settings": {
    "location": "/usr/local/backups/all_backup"
  }
}

2. 备份快照,快照名字v2019-7-2
http://10.1.1.112:9200/_snapshot/all_backup/v2019-7-2?wait_for_completion=true    PUT

如果只需要备份某几个索引可以加上:

{
"indices": "article"
}


3. 查询快照 http://10.1.1.112:9200/_snapshot/all_backup/* GET 4. 恢复快照 http://10.1.1.112:9200/_snapshot/all_backup/v2019-7-2/_restore POST
原文地址:https://www.cnblogs.com/cccy0/p/9579275.html