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 ...
随机推荐
- 【性能优化】(2)JVM调优
JVM调优 2019-07-21 12:32:00 by冲冲 1.
- CreateProcess error=206, 文件名或扩展名太长。
改:
- 如何隐藏shell脚本内容
从事 Linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚本中有一些关键的代码, 所有这些内容你都不想别人阅读或者修改 ...
- Codeforces 1236F - Alice and the Cactus(期望+分类讨论)
Codeforces 题面传送门 & 洛谷题面传送门 期望好题. 首先拆方差: \[\begin{aligned} &E((x-E(x))^2)\\ =&E(x^2)-2E(x ...
- Atcoder Regular Contest 058 D - 文字列大好きいろはちゃん / Iroha Loves Strings(单调栈+Z 函数)
洛谷题面传送门 & Atcoder 题面传送门 神仙题. mol 一发现场(bushi)独立切掉此题的 ycx %%%%%%% 首先咱们可以想到一个非常 naive 的 DP,\(dp_{i, ...
- Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...
- [R] 保存pheatmap图片对象到文件
一般我们使用pheatmap通过Rstudio交互得到的图片在plots的Export导出即可,如何保存对象到文件呢?这个需求在自动化流程中很常见,作者似乎也没说明. 生成示例数据: test = m ...
- 一款真正可以拿的出手的本土嵌入式RTOS-SylixOS
由 winniewei 提交于 周四, 12/20/2018 作者:张国斌 在参加工信部人才交流中心和南京浦口区开发区管委会联合举办的第三届集成电路产业紧缺人才创新发展高级研修班暨产业促进交流会期间, ...
- URLDNS分析
学习了很久的Java基础,也看了很多的Java反序列化分析,现在也来分析学习哈最基础的URLDNS反序列化吧. Java反序列化基础 为了方便数据的存储,于是乎有了现在的Java序列化于反序列化.序列 ...
- 去空格及换行制表符【c#】
string returnStr = tbxContractNO.Text.Replace("\n", "").Replace(" ", & ...