【全文搜索引擎】Elasticsearch基本查询&基础JavaAPI

操作索引

ElasticSearch存储数据的地方,可以理解成关系型数据库中的数据库概念。

  • 添加索引
PUT http://ip:端口/索引名称

Kibana操作  ---   PUT 索引名称
  • 查询索引
GET http://ip:端口/索引名称 					# 查询单个索引信息
GET http://ip:端口/索引名称1,索引名称2... 	# 查询多个索引信息
GET http://ip:端口/_all 					# 查询所有索引信息

Kibana操作  
	GET 索引名
	GET 索引名1,索引名2
	GET _all
  • 删除索引
DELETE http://ip:端口/索引名称

Kibana操作  ---   DELETE 索引名
  • 关闭索引
POST http://ip:端口/索引名称/_close 

Kibana操作  ---   POST 索引名称/_close
  • 打开索引
POST http://ip:端口/索引名称/_open

Kibana操作  ---   POST 索引名称/_open

操作映射

数据类型

简单数据类型

  • 字符串
    • text:会分词,不支持聚合
    • keyword:不会分词,将全部内容作为一个词条,支持聚合
  • 数值
  • 布尔
    • boolean
  • 二进制
    • binary
  • 范围类型
    • integer_range, float_range, long_range, double_range, date_range
  • 日期
    • date

复杂数据类型

  • 数组:[ ]
  • 对象:{ }

操作映射

PUT /索引库名称/_mapping/类型名称
{
  "properties": {
    "字段名":  {
      "type": 类型,可以是text、keyword、longshort、date、integer、object等
    "index": 是否索引,默认为true
    "store": 是否存储,默认为false
      "analyzer": 分词器
    }
  }
}
PUT person
{
  "mappings": {
    "properties": {
      "name":{
        "type" : "keyword"
      },
      "age":{
        "type" : "integer"
      },
      "address":{
        "type" : "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

name: 字段【域】

操作文档

增加文档,ID存在,则更新,不存在,则增加

#添加文档,指定ID
PUT person/_doc/1
{
  "name":"张三",
  "age":20,
  "address":"北京市海淀区"
}
#添加文档,不指定ID
POST person/_doc
{
  "name":"张三",
  "age":20,
  "address":"北京市海淀区"
}

ID会自动生成

删除文档

#删除指定ID的文档
DELETE person/_doc/1

查询文档

#查询指定ID的文档
GET person/_doc/1

#查询全部文档
GET person/_search

#完整语法
GET person/_search
{
  "query": {
    "match_all": {}
  }
}

基本查询

词条查询:term

词条查询是Elasticsearch中的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而
且是确切的、未经分析的词条。最简单的词条查询如下所示:

{ 
 	"query" : { 
 		"term" : { 
 			"title" : "crime" 
 		} 
 	} 
}

上述查询将匹配title字段中含有crime一词的文档。记住,词条查询是未经分析的,因此需要提供跟索引文档中的词条完全匹配的词条。请注意,在输入数据中,title字段含有Crime and
Punishment,但我们使用小写开头的crime来搜索。因为Crime一词在建立索引时已经变成了crime。
在这里插入图片描述

match_all 查询

match_all查询是Elasticsearch中最简单的查询之一。它使我们能够匹配索引中的所有文件。

{ 
 "query" : { 
 "match_all" : {} 
 } 
}

JavaAPI

1、SpringBoot整合ES
2、操作ES的核心客户端
	RestHighLevelClient
3、操作索引
	核心对象 IndicesClient
	- 创建索引,也可以同时指定映射
		create(CreateIndexRequest, RequestOptions.DEFAULT)
		//指定映射
		CreateIndexRequest.mapping(映射规则,数据格式【一般为json】);
	- 查询索引
		get(GetIndexRequest, RequestOptions.DEFAULT);
	- 判断索引是否存在
		exists(GetIndexRequest, RequestOptions.DEFAULT);
	- 删除索引
		get(DeleteIndexRequest, RequestOptions.DEFAULT);
4、操作文档
	核心对象 IndexRequest
	- 创建文档
		以map为数据
			new IndexRequest("索引名").id("文档ID").source(数据);
		以对象的json为数据
			new IndexRequest("索引名").id("文档ID").source(数据,数据格式【json】);
		使用RestHighLevelClient的index方法创建
	- 查询文档
		使用RestHighLevelClient的get方法查询
	- 更新文档
		增加文档方法,ID相同,即为更新
	- 删除文档
		使用RestHighLevelClient的delete方法删除
发布了34 篇原创文章 · 获赞 14 · 访问量 1568

猜你喜欢

转载自blog.csdn.net/Wan_Yuan/article/details/105449655