elasticsearch url查询和DSL查询

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值