###################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”]
}
}
}