一、索引操作

---------------------------------

创建索引(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 使用的更多相关文章

  1. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  2. Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

  3. 以bank account 数据为例,认识elasticsearch query 和 filter

    Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...

  4. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  5. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  6. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  7. .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装  运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

  8. 自己写的数据交换工具——从Oracle到Elasticsearch

    先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...

  9. 如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

  10. 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 ...

随机推荐

  1. Python字符出现次数统计

    1.读取文本文档 红球.txt 2.运行代码 with open('红球.txt', "r", encoding="utf-8")as f: d = {} fo ...

  2. 服务API版本控制设计与实践

    一.前言 笔者曾负责vivo应用商店服务器开发,有幸见证应用商店从百万日活到几千万日活的发展历程.应用商店客户端经历了大大小小上百个版本迭代后,服务端也在架构上完成了单体到服务集群.微服务升级. 下面 ...

  3. 在Ubuntu上安装Docker Engine

    在Ubuntu上安装Docker Engine 这篇文章是介绍如何在在Ubuntu上安装Docker Engine,就是Google翻译官方文档的版本,英语好的直接官方原文.原文 要在Ubuntu上开 ...

  4. 洛谷 P7324 - [WC2021] 表达式求值(状压+dp)

    题面传送门 现场人傻系列-- 首先建出 \(E\) 的表达式树,具体来说表达式的每一个叶子节点表示一个数组 \(A_i\),每一个非叶子节点都表示一次运算,它的值表示左右儿子进行该运算后得到的结果.这 ...

  5. VMware和Centos的安装及配置

    目录 1. 安装VMware 2. 安装CentOS6及配置 2.1 Centos安装 2.1.1 配置网络连接的三种形式 2.1.1.1 桥连接 2.1.1.2 NAT模式 2.1.1.3 主机模式 ...

  6. linux 网络配置管理

    [1]网络配置基础 (1)用户既可以通过命令行的方式,也可以通过友好的图形界面,轻松完成网络配置. (2)实现Linux网络配置的惟一目标就是修改系统中众多的网络配置文件, 如/etc/interfa ...

  7. 联盛德 HLK-W806 (六): I2C驱动SSD1306 128x64 OLED液晶屏

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  8. abuse

    abuse 近/反义词: ill-treat, maltreat, mistreat, misuse, prostitute, spoil; defame, disparage, malign, re ...

  9. Scala(一)【安装和IDEA中开发】

    目录 一.下载 二.windows安装 三.linux环境安装 四.Ida开发Scala 1.在线下载Scala插件 2.离线下载Scala插件 3.验证 五.HelloWorld入门程序 1.新建M ...

  10. c学习 - 第三章:数据类型、运算符与表达式

    数据类型 基本类型 整型 短整型(short int) 基本整型(int) 长整型(long int) 字符型(char) 浮点型 单精度(float) 双精度(double) 长双精度(long d ...