1、创建非结构化索引
在Lucene中,创建索引是需要定义字段名称以及字段的类型的,在Elasticsearch中提供了非结构化的索引,就是不需要创建索引结构,即可写入数据到索引中,实际上在Elasticsearch底层会进行结构化操作,此操作对用户是透明的。
1)通过在可视化工具进行创建
2)通过api进行创建
number_of_shards表示分片的数量;number_of_replicas表示副本的数量
PUT http://192.168.142.128:9200/haoke
Headers: key: Content-Type value: application/json
{
"settings": {
"index": {
"number_of_shards": "2",
"number_of_replicas": "0"
}
}
}
2、删除索引
DELETE http://192.168.142.128:9200/haoke
3、插入数据
URL规则:
#id为非必须,有传入以传入为准,没有传入则会自动生成
POST http://192.168.142.128:9200/{索引}/{类型}/{id}
POST/PUT http://192.168.142.128:9200/haoke/user/1001
{
"id": 1001,
"name": "张三",
"age": 20,
"sex": "男"
}
不指定id
POST http://192.168.142.128:9200/haoke/user
{
"id": 1002,
"name": "李四",
"age": 21,
"sex": "女"
}
4、更新文档数据
在Elasticsearch中,文档数据是不为修改的,但是可以通过覆盖的方式进行更新
这里更新之后,_version字段值加1
PUT http://192.168.142.128:9200/haoke/user/1001
{
"id": 1001,
"name": "张三",
"age": 21,
"sex": "女"
}
进行局部更新数据,在路径末尾加_update,将更新的数据写在doc中
POST http://192.168.142.128:9200/haoke/user/1001/_update
{
"doc": {
"age": 23
}
}
5、删除数据
在Elasticsearch中,删除文档数据,发起DELETE请求、路径后面加上{id}
DELETE http://192.168.142.128:9200/haoke/user/1001
#说明:删除一个文档也不会立即从磁盘上移除,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。
6、搜索数据
1)根据id进行数据的查寻
GET http://192.168.142.128:9200/haoke/user/1001
2)搜索全部数据,在url末尾加上_search,默认10条数据
GET http://192.168.142.128:9200/haoke/user/_search
3)关键字搜素数据
#查寻年龄为20的数据
http://192.168.142.128:9200/haoke/user/_search?q=age:20
7、DSL搜索
Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。
查询年龄为20的信息
POST http://192.168.142.128:9200/haoke/user/_search
{
"query": {
"match": {
"age": 20
}
}
}
查询年龄大于22岁性别为男的信息
POST http://192.168.142.128:9200/haoke/user/_search
{
"query": {
"bool":{
"must":{
"match": {
"sex": "男"
}
},
"filter":{
"range":{
"age":{
"gt":22
}
}
}
}
}
}
全文搜索(这里会进行会词)
http://192.168.142.128:9200/haoke/user/_search
{
"query": {
"match":{
"name":"张三李四"
}
}
}
8、高亮显示
加入关键字highlight,并指定fields字段
http://192.168.142.128:9200/haoke/user/_search
{
"query": {
"match":{
"name":"张三李四"
}
},
"highlight":{
"fields":{
"name":{}
}
}
}
9、聚合
在Elasticsearch中,支持聚合操作,类似SQL中的group by操作。
http://192.168.142.128:9200/haoke/user/_search
{
"aggs": {
"all_interests": {
"terms": {
"field": "age"
}
}
}
}