ElasticSearch 使用
一、索引操作
---------------------------------
创建索引(PUT)
PUT /索引名
curl -X PUT http://10.20.20.214:9200/shopping
设置映射关系(类似mysql的表的字段设置属性) (PUT /索引名/_mapping)
{"properties":{ //特性
"name":{ //字段
"type":"text", //字段属性
"index":true //是否能被索引
}
}
}
curl -X PUT http://10.20.20.214:9200/user
{"acknowledged":true,"shards_acknowledged":true,"index":"user"} curl -X PUT http://10.20.20.214:9200/user/_mapping?pretty -d '{"properties":{"name":{"type":"text","index":true}, "sex":{"type":"keyword","index":true},"tel":{"type":"keyword","index":false}}}' -H "Content-Type:application/json"
{
"acknowledged" : true
}
查询映射关系:GET /索引名/_mapping
curl -X GET http://10.20.20.214:9200/user/_mapping?pretty
{
"user" : {
"mappings" : {
"properties" : {
"name" : {
"type" : "text"
},
"sex" : {
"type" : "keyword"
},
"tel" : {
"type" : "keyword",
"index" : false
}
}
}
}
}
- 查询字段type:keyword的则 match查询时,全词模糊匹配。
- 查询字段type:text 的则 match查询时,输入的查询关键词会被拆分后再进行模糊匹配
查询索引(GET /_cat/indices?v)
GET http://10.20.20.214:9200/_cat/indices?v
二、数据操作
--------------------------------
添加数据 (body中添加数据{} json格式)
- POST /索引名/_doc
- PUT /索引名/_create
curl -X POST http://10.20.20.214:9200/shopping/_doc -d '{"name":"zhangmingda", "age":23}' -H "Content-Type:application/json"
查询数据
- 查单条数据:GET /索引名/_doc/索引ID
- 查所有数据:GET /索引名/_search
[root@vm10-20-9-45 ElasticSearch]# curl -X GET http://10.20.20.214:9200/shopping/_search?pretty=true
{
"took" : 438,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 6,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "4V9BSnsBL-0_1XxfCTs7",
"_score" : 1.0,
"_source" : {
"name" : "zhangmingda",
"age" : 23
}
},
.......
]
}
}
过滤查询
- GET /index/_search?pretty body中传递查询参数
{"query":{"match":{"category":"小米"}}}
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match":{"category":"小米"}}}'
- 查询所有(body传参)
{"query":{"match_all":{}}}
- 分页查询
{"query":{"match_all":{}},"from":0,"size":2}
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"from":0,"size":2}'
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "4V9BSnsBL-0_1XxfCTs7",
"_score" : 1.0,
"_source" : {
"name" : "zhangmingda",
"age" : 23
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "519NSnsBL-0_1XxfIztW",
"_score" : 1.0,
"_source" : {
"name" : "zhangmingda",
"age" : 23
}
}
]
}
}
- 只要数据的特定字段"query":{"match_all":{}},"_source":["title"]}
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title"]}'

[root@vm10-20-9-45 ~]# curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title"]}'
{
"took" : 13,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "4V9BSnsBL-0_1XxfCTs7",
"_score" : 1.0,
"_source" : { }
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "519NSnsBL-0_1XxfIztW",
"_score" : 1.0,
"_source" : { }
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "6F9NSnsBL-0_1XxfMjvj",
"_score" : 1.0,
"_source" : { }
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10001",
"_score" : 1.0,
"_source" : {
"title" : "华为V8"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10002",
"_score" : 1.0,
"_source" : {
"title" : "小米手机4"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10003",
"_score" : 1.0,
"_source" : {
"title" : "小米手机4"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10004",
"_score" : 1.0,
"_source" : {
"title" : "小米手机4"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10005",
"_score" : 1.0,
"_source" : {
"title" : "小米手机6"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10008",
"_score" : 1.0,
"_source" : {
"title" : "小米手机8"
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "20008",
"_score" : 1.0,
"_source" : {
"title" : "华为V1"
}
}
]
}
}
输出
- 查询&排序 & 分页
"sort": {"price":{"order":"desc"}},"from":2,"size":3{"query":{"match_all":{}},"_source":["title","price"],"sort": {"price":{"order":"desc"}},"from":2,"size":3}
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title","price"],"sort": {"price":{"order":"desc"}},"from":2,"size":3}'
- 全文查询,匹配即可,不做字符拆分"match_phrase"
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"小米"}}}'

curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}}}'
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 5,
"relation" : "eq"
},
"max_score" : 0.50209194,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10002",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10003",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10004",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10005",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机6",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2999.0
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10008",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机8",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 8999.0
}
}
]
}
}
输出
- 高亮显示字段 "highlight":{"fields":{"字段":{}}}
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}},"highlight":{"fields":{"category":{}}}}'

curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}},"highlight":{"fields":{"category":{}}}}'
{
"took" : 36,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 5,
"relation" : "eq"
},
"max_score" : 0.50209194,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10002",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
},
"highlight" : {
"category" : [
"小<em>米</em>"
]
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10003",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
},
"highlight" : {
"category" : [
"小<em>米</em>"
]
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10004",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机4",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2993.0
},
"highlight" : {
"category" : [
"小<em>米</em>"
]
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10005",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机6",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 2999.0
},
"highlight" : {
"category" : [
"小<em>米</em>"
]
}
},
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "10008",
"_score" : 0.50209194,
"_source" : {
"title" : "小米手机8",
"category" : "小米",
"images" : "http://www.xiaomi.com",
"price" : 8999.0
},
"highlight" : {
"category" : [
"小<em>米</em>"
]
}
}
]
}
}
输出
- 分组查询
{
"aggs":{ //聚合操作
"price_group":{ //名称随意起名
"terms":{ //分组
"field": "price" //分组字段
}
}
}
}
测试分组查询:
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}}}' -H "Content-Type:application/json"

curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}}}' -H "Content-Type:a
{
"took" : 23,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "shopping",
"_type" : "_doc",
"_id" : "4V9BSnsBL-0_1XxfCTs7",
"_score" : 1.0,
"_source" : {
"name" : "zhangmingda",
"age" : 23
}
},
.......
]
},
"aggregations" : {
"price_group" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 2993.0,
"doc_count" : 4
},
{
"key" : 4999.0,
"doc_count" : 2
},
{
"key" : 8999.0,
"doc_count" : 2
},
{
"key" : 2999.0,
"doc_count" : 1
},
{
"key" : 3999.0,
"doc_count" : 1
}
]
}
}
}
输出
不显示原始数据:加 "size":0
{"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0}
结果
curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0}' -H "Content-Type:application/json"
{
"took" : 5,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"price_group" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 2993.0,
"doc_count" : 4
},
{
"key" : 4999.0,
"doc_count" : 2
},
{
"key" : 8999.0,
"doc_count" : 2
},
{
"key" : 2999.0,
"doc_count" : 1
},
{
"key" : 3999.0,
"doc_count" : 1
}
]
}
}
}
更新数据
- 全量更新 PUT /index/_doc/id -d {'数据'}
curl -X PUT http://10.20.20.214:9200/shopping/_doc/1002 -d '{"name":"zhangmingda", "age":22}' -H "Content-Type:application/json"
- 局部数据更新 POST /index/_update/id -d {"doc":{数据}}
curl -X POST http://10.20.20.214:9200/shopping/_update/1002 -d '{"doc":{"age":33}}' -H "Content-Type:application/json"
删除数据
- DELETE /index/_doc/数据id
curl -X DELETE http://10.20.20.214:9200/shopping/_doc/1002
{"_index":"shopping","_type":"_doc","_id":"1002","_version":4,"result":"deleted","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":9,"_primary_term":1}
ElasticSearch 使用的更多相关文章
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- Elasticsearch 5.0 中term 查询和match 查询的认识
Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...
- 以bank account 数据为例,认识elasticsearch query 和 filter
Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- .net Elasticsearch 学习入门笔记
一. es安装相关1.elasticsearch安装 运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...
- 自己写的数据交换工具——从Oracle到Elasticsearch
先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...
- jar hell & elasticsearch ik 版本问题
想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...
随机推荐
- C/C++ Qt Tree与Tab组件实现分页菜单
虽然TreeWidget组件可以实现多节点的增删改查,但多节点操作显然很麻烦,在一般的应用场景中基本上只使用一层结构即可解决大部分开发问题,TreeWidget组件通常可配合TabWidget组件,实 ...
- CF1540B Tree Array
先写一下自己想到的部分: 考虑枚举一个根. 计算一个点对出现的概率. 对于我这种期望概率基本不会的人,差点就把这题切了. 自己想到的部分都没有假. 问题在于: 如何计算一个点对出现的概率. 考虑和这两 ...
- DirectX12 3D 游戏开发与实战第十章内容(上)
仅供个人学习使用,请勿转载.谢谢! 10.混合 本章将研究混合技术,混合技术可以让我们将当前需要光栅化的像素(也称为源像素)和之前已经光栅化到后台缓冲区的像素(也称为目标像素)进行融合.因此,该技术可 ...
- 52-Linked List Cycle
Linked List Cycle My Submissions QuestionEditorial Solution Total Accepted: 102785 Total Submissions ...
- 修改unittest源码之tearDown
需求 最近在写selenium自动化平台,想把每条用例后面都带上截图,最开始是每条用例加上封装好的截图函数,但是发现太麻烦,就决定加在tearDown函数里面,每条用例结束后执行截图操作. 那么问题来 ...
- UE4 C++工程以Game模式启动
UE4版本:4.24.3源码编译版本 Windows10 + VS2019环境 UE4 C++工程,默认情况下VS中直接运行是启动Editor模式: 有时为了调试等目的需要以Game模式启动,可以避免 ...
- 【NetCore】RabbitMQ 封装
RabbitMQ 封装 代码 https://gitee.com/wosperry/wosperry-rabbit-mqtest/tree/master 参考Abp事件总线的用法,对拷贝的Demo进行 ...
- Identity Server 4 从入门到落地(七)—— 控制台客户端
前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...
- Spark(十七)【SparkStreaming需求练习】
目录 一.环境准备 1.pom文件 2.bean 3.工具类 JDBCUtils Properties工具类 3.创建BaseApp 需求一:动态添加黑名单 需求二:广告点击量实时统计 需求三:最近一 ...
- 什么是 IP 地址 – 定义和解释
IP 地址定义 IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备.IP 代表"互联网协议",它是控制通过互联网或本地网络发送的数据格式的一组规则. 本质上,IP 地址是允 ...