###################20200523################
GET goods

GET /goods/_count

POST /goods/_search

查看索引

GET /_cat/indices/kibana*?v&s=index

查看索引按照文档个数排序

GET /_cat/indices?v&s=docs.count:desc

查看状态为绿的索引

GET /_cat/indices?v&health=green

查看所有的节点

GET _cat/nodes?v

查看集群的健康状态

GET _cluster/health

查看集群状态,详细

GET _cluster/state

查看集群的设置

GET _cluster/settings

查看所有的分片

GET _cat/shards

crud

GET raven_index/_search
 {
 “query”: {
 “match_all”: {}
 }
 , “size”: 50
 }

post create 不指定id直接创建

POST raven_index/_doc
 {
 “user” : “Mike”
 }

put create 必须指定id创建

PUT raven_index/_doc/10
 {
 “user” : “Mike”
 }

put create 如果id以及存在 仍然指定为create 就会报错

PUT raven_index/_doc/10?op_type=create
 {
 “user” : “Mike”,
 “address”:“西安”
 }GET raven_index/_doc/10

put 方式 Index 类型 进行 Update

put update 会全量替换。如果id存在先删除再创建 默认的op_type操作参数为 index

PUT raven_index/_doc/10
 {
 “user” : “tom”
 }

post 方式 update 会在源文档上添加字段 partial Update

POST raven_index/_doc/10
 {
 “user” : “tom2”,
 “name” : “张三”
 }

index 如果存在就替换,delete 如果存在就删除,create如果存在就报错,update 如果存在 就修改

POST _bulk
 { “index” : { “_index” : “test”, “_id” : “1” } }
 { “field1” : “value1” }
 { “delete” : { “_index” : “test”, “_id” : “2” } }
 { “create” : { “_index” : “test2”, “_id” : “3” } }
 { “field1” : “value3” }
 { “update” : {"_id" : “1”, “_index” : “test”} }
 { “doc” : {“field2” : “value2”} }GET test/_search

mget 批量根据id获取指定的数据(可以为不同索引)

GET /_mget
 {
 “docs”:[
 {
 “_index” : “raven”,
 “_id” : “2”
 },
 {
 “_index” : “raven_index”,
 “_id” : “1”
 }
 ]
 }

mget 指定索引,根据id获取多条数据

GET /raven_index/_mget
 {
 “ids”:[“1”,“2”,“3”,“20”]
 }POST raven/_update/3
 {
 “doc”: {
 “source” :{
 “city”:“西安”,
 “contury” :“杉木溪”
 }
 }
 }
 GET raven/_doc/3

mget 通过_source 决定是否显示查询数据,也可以指定想要查询 的字段,或者包含的字段

GET /_mget
 {
 “docs”: [
 {
 “_index” : “raven”
 ,"_id" : “2”
 ,"_source" : false
 },
 {
 “_index” : “raven_index”
 ,"_id" : “1”
 ,"_source" : [“address”,“age”]
 },
 {
 “_index” : “raven”
 ,"_id" : “3”
 ,"_source" : {
 “include” : [“source”],
 “exclude” : [“source.city”]
 }
 }
 ]
 }

msearch 通过一次查询请求对多个索引进行多次查询

POST raven/_msearch
 {}
 {“query” : {“match_all” : {}},“size”:1}
 {“index” : “raven_index”}
 {“query” : {“match_all” : {}},“size”:2}POST _analyze
 {
 “analyzer”: “standard”,
 “text”: “今天的天气不错”
 }

ik分词器 ik_max_word 分词粒度大 分出来的词多

POST _analyze
 {
 “analyzer”: “ik_max_word”,
 “text”: “我一把把方向盘把把住了”
 }

ik分词器 ik_smart 分词力度小 分出来的词少

POST _analyze
 {
 “analyzer”: “ik_smart”,
 “text”: “我一把把方向盘把把住了”
 }

url Search 查询

url查询时可以添加一些参数 df:默认查询的字段(如果不写查询所有) size ,form:结果进行分页 profile:显示查询时如何进行的 timeout:查询的超时时间 sort:根据某个字段进行排序 q:代表进行查询条件

指定查询词为华为 查询字段为title

GET /goods/_search?q=华为&df=title

查询所有字段中包含华为的数据 泛查询

GET /goods/_search?q=华为

带profile 查看查询的过程 查询方式为termquery

GET /goods/_search?q=华为&df=title
 {
 “profile”:“true”
 }
 GET /goods/_search?q=title:华为
 {
 “profile”:“true”
 }

对查询的结果进行排序 查询方式为DisjunctionMaxQuery 分析然后进行查询

GET /goods/_search?q=华为&sort=price:desc
 {
 “profile”:“true”
 }

查询词使用 “” 进行phrase查询 PhraseQuery 词组查询 仅当整个词组出现,并且按照指定顺序出现

GET /goods/_search?q=title:“白色 移动4G手机”
 {
 “profile”: “true”
 }

BooleanQuery 查询将词组进行分词,只要符合其中的某一个条件即可

GET /goods/_search?q=title:(白色 移动4G手机)
 {
 “profile”: “true”
 }

布尔查询之布尔操作符

AND NOT OR(默认) MUST(+) MUST NOT(-) 在查询方式中 用+来标识must 必须匹配 用-来表示must not 必须不匹配
GET /goods/_search?q=title:(白色 AND 移动4G手机)
 {
 “profile”: “true”
 }GET /goods/_search?q=title:(白色 OR 移动4G手机)
 {
 “profile”: “true”
 }

BooleanQuery 查询 必须匹配白色 必须不匹配移动4G手机

GET /goods/_search?q=title:(白色 NOT 移动4G手机)
 {
 “profile”: “true”
 }
 #范围查询 ,区间写法
 GET /goods/_search?q=title:白色 移动4G手机 AND price:[2000 TO 3000]
 {
 “profile”: “true”
 }

通配符

GET /goods/_search?q=title:白色*
 {
 “profile”: “true”
 }

查询并分页 分页的层次越深,性能越低deepaging问题

GET goods/_search
 {
 “query”: {
 “match_all”: {}
 }
 , “from”: 0
 , “size”: 20
 }POST goods/_search
 {
 “query”: {
 “match_all”: {}
 },
 “sort”: [
 {
 “price”: {
 “order”: “desc”
 }
 }
 ]
 }

#source filtering 通过_source字段指定 对获取的结果进行过滤,获取部分字段的数据

POST goods/_search
 {
 “_source”: [“brandName”,“price”]
 , “query”: {
 “match_all”: {}
 }
 }

match query match默认对查询的关键字进行分词 并且分词后的数据之间是或者(or)的关系,有一个就匹配

POST goods/_search
 {
 “query”: {
 “match”: {
 “title”: “华为手机”
 }
 }
 }

match query指定分词后匹配的方式为AND

POST goods/_search
 {
 “query”: {
 “match”: {
 “title”: {
 “query”: “华为手机”,
 “operator”: “and”
 }
 }
 }
 }

match_phrase match 的词组查询,词组出现的顺序必须一致

POST goods/_search
 {
 “query”: {
 “match_phrase”: {
 “title”: “华为手机”
 }
 }
 }

match_phrase match 的词组查询,词组出现的顺序必须一致 通过slop属性指定匹配时中间最多可以相隔几个字符

match_phrase 也会对查询的关键词进行分词

POST goods/_search
 {
 “query”: {
 “match_phrase”: {
 “title”: {
 “query”: “华为手机”,
 “slop”: 100
 }
 }
 }
 }

query string query & Simple Query String Query

query string query相当于是哪url中的查询转为DSL语言

可以通过df指定根据那个字段查询 默认的operator为or

POST goods/_search
 {
 “query”: {
 “query_string”: {
 “default_field”: “title”,
 “query”: “华为手机电视”
 }
 }
 }

也可以指定根据哪些字段查询

POST goods/_search
 {
 “query”: {
 “query_string”: {
 “fields”: [“title”,“categoryName”],
 “query”: “三星手机”
 }
 }
 }

也可以指定为默认的operator为AND

POST goods/_search
 {
 “query”: {
 “query_string”: {
 “fields”: [“title”,“categoryName”],
 “query”: “三星手机”,
 “default_operator”: “AND”
 }
 }
 }

Simple Query String Query 的查询中不支持AND Query String Query 支持查询语句中加操作符 但是可以通过默认操作符指定

POST goods/_search
 {
 “query”: {
 “query_string”: {
 “fields”: [“title”,“categoryName”],
 “query”: “三星 AND 手机”
 }
 }
 }

可以通过 + - 实现must 和must not

POST goods/_search_shards1
 {
 “query”: {
 “simple_query_string”: {
 “query”: “+三星 -手机”,
 “fields”: [“title”]
 }
 }
 }