Elasticsearch的使用操作
文章目录
提示:以下内容仅供参考
一、Elasticsearch是什么?
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎, 基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache 许可条款下的开放源码发布,是第二最流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索, 稳定,可靠,快速,安装使用方便。
二、Elasticsearch的安装和使用
1、Elasticsearch下载安装
提示:安装 Elasticsearch 之前,你需要先安装一个较新的版本的 Java,最好的选择是,你可以从 www.java.com 获得官方提供的最新版本的 Java。
elasticsearch下载
- 解压下载文件
- 启动文件中bin目录下的elasticsearch.bat
- 成功访问http://localhost:9200,则elasticsearch启动成功
2、可视化平台Kibana的安装使用
- 解压下载文件
- 要连接非本地的elasticsearch,需配置config目录下的kibana.yml。修改elasticsearch的hosts、username、password
- 启动文件中bin目录下的kibana.bat
- 成功访问http://127.0.0.1:5601/app/dev_tools#/console,则可进行ES的增删改查
3、ElasticSearch的数据操作
3.1 查询操作
bool :这是个 复合过滤器(compound filter) ,它可以接受多个其他过滤器作为参数,并将这些过滤器结合成各式各样的布尔(逻辑)组合。
must:所有的语句都 必须(must) 匹配,与 AND 等价。
must_not:所有的语句都不能(must not) 匹配,与 NOT 等价。
should:至少有一个语句要匹配,与 OR 等价。
match_phrase:不分词查询。
term:精准查询,与=等价。
match_all: {} 匹配所有的, 当不给查询条件时,默认全查。
GET /listDoc/_search
{"query" : {
"bool" : {
"must": [
{"term": {"字段名":""}},{"term": {"字段名":""}},
{"bool": {
"should" : [
{"match_phrase": {"字段名": ""}},
{"term" : {"字段名.字段名": ""}}
]
}}
]}
},
"from": (pageNum-1)*pageSize,"size": pageSize,
"sort": [{"字段名": {"order": "desc"}}]
}
多个字段查询
multi_match:同时对查询的关键词,多个字段同时进行匹配,即多个字段是AND的关系
{
"query":{
"multi_match":{
"query":"2501",
"fields":["merchant_id","_id"]
}
}
}
多个值查询
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"字段名" : ["", ""]
}
}
}
}
gt : > 大于
lt : < 小于
gte : >= 大于等于
lte : <= 小于等于
"query" : {
"filtered" : {
"filter" : {
"range" : {
"price" : {
"gt" : 20.0,
"lt" : 100
}
}
}
}
}
3.2 删除操作
符合条件的数据都会被删除
POST template_list_dict/_delete_by_query
{
"query" : {
"bool" : {
"must": [
{"term": {"字段":"条件"}},{"term": {"字段":"条件"}}
]
}
}
}
3.3 新增操作
?refresh的作用是刷新数据,用于实现新增数据后的实时查询,也可用于删除操作。
POST listDoc/_doc【?refresh】
{
"字段" : "数据",
"字段" : "数据"
}
3.4 索引
新增一个文档时,ES会自动创建一个索引
// 创建索引test
PUT test
// 获取索引
GET test
// 删除索引
DELETE test
// 创建索引时定义mapping和setting
PUT test
{
"mappings" : {
"properties" : {
"name" : {
"type" : "keyword"
}
}
},
"settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 2
}
}
}
3.5 setting的操作
refresh_interval:索引刷新的时间,默认为1s
number_of_replicas:副本数量,可以修改,默认1
number_of_shards:分片数量,不可修改,只能在创建索引的时候定义,默认1
GET template_list_dict/_settings
PUT template_list_dict/_settings
{ "refresh_interval": "2s" }
3.6 mapping的操作
// 获取ES所有的mapping
GET _mapping
// 定义索引的mapping
PUT test/_mapping
{
"properties" : {
"name" : {
"type" : "keyword"
}
}
}
4、keyword和text类型
keyword: 不支持全文搜索。所以,只能是使用精确匹配进行查询,比如 term 查询。
text :默认支持全文搜索。
提示:仅限于分享自我学习的内容,有错误麻烦评论告知一下,谢谢。