Elasticsearch 常用API(下)

本文详细介绍了Elasticsearch中添加文档、查询索引数据、match查询、match_phrase查询、bool查询等基本操作,包括不同类型的查询条件、排序方式及过滤筛选。通过对各种查询语句的实例解析,帮助读者深入理解Elasticsearch的查询机制。
摘要由CSDN通过智能技术生成

1.添加Document

PUT /<index>/<type>/<ID>

现在创建一个名为user的document,

put /index1/user/

ES不用显式的创建文档,如果在创建document之前没有创建index1,则ES会创建一个名为index1的索引。

2.查询索引中的全部数据

get index4/_search
{
  "query":{
    "match_all": {}
  }
  "sort":{
	"account_number":"asc"
}
}

查询全部数据,并且按照account_number字段正序排序
在这里插入图片描述
返回json中的hits 就是ES搜索命中的数据

3.查询语句介绍

基本参数选项:query、from、size、sort、_source

GET /bank/_search
{
    "query": {"match_all": {}},
    "from": 10,
    "size": 2,
    "sort": [
       {"balance": { "order": "desc" } }
    ],
    "_source":["account_number","balance"]
}

query:指定查询条件,这里使用{ “match_all”: {} }表示查询条件匹配所有记录

from:表示从第n条匹配记录开始取值,默认为0

size:表示匹配条数,默认10

sort:表示排序,这里使用{ “balance”: { “order”: “desc” }},表示按balance降序排序,这里也可以写成[{ “balance”: “desc” }]

_source:表示查询字段,这里使用[“account_number”, “balance”]表示返回结果中,只需要返回"account_number", "balance"两个字段即可。默认返回所有字段。

**

4.查询匹配条件(match)

**

GET /bank/_search
{
    "query": {
        "match": {"account_number": 20}
    }
}

这里需要注意的是,match只能匹配分词字段。

5.## match 查询

GET /bank/_search
{
    "query": {
        "match": {"address": "mill lan"}
    }
}

如果文档中包含了 address= mill 或者 address = lan,则查询命中,原因是 address 被分词了,实际存的是 mill 和 lan 两个字段。

6.match_phrase查询: 短语查询

类似 match 查询, match_phrase 查询首先将查询字符串解析成一个词项列表,然后对这些词项进行搜索,但只保留那些包含 全部 搜索词项,且 位置 与搜索词项相同的文档,且中间不许夹杂其他词 。 比如对于 quick fox 的短语搜索可能不会匹配到任何文档,因为没有文档包含的 quick 词之后紧跟着 fox 。

GET /bank/_search
{
    "query": {
        "match_phrase": {"address": "mill lane"}
    }
}

查询包含短语 mill lane 的文档,如果 address 中有等于 mill 或者 lane 的文档,不会查询命中。

7.bool and关系查询:查询 address 中同时包含 “mill” 和 “lane” 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "must": [
               { "match": {  "address": "mill" } },
               { "match": { "address": "lane" } }
            ]
        }
    }
}

8.bool or 关系查询:查询 address 中包含 “mill” 或者 “lane” 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "should": [
               { "match": { "address": "mill" } },
               { "match": { "address": "lane"  } }
            ]
        }
    }
}

9.bool and关系查询:查询 address 中同时包含 “mill” 和 “lane” 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "must": [
               { "match": {  "address": "mill" } },
               { "match": { "address": "lane" } }
            ]
        }
    }
}

10.bool not关系查询:查询 address 中即不存在 “mill” 也不存在 “lane” 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "must_not": [
               { "match": { "address": "mill" } },
               { "match": { "address": "lane" } }
            ]
        }
    }
}

11.bool 组合查询:查询 age=40,state!=“ID” 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "must": [
               { "match": { "age": 40 } }
            ],
            "must_not": [
               { "match": { "state": "ID" } }
            ]
        }
    }
}

12.bool filter查询:查询 20000<=balance<=30000 的document

GET /bank/_search
{
    "query": {
        "bool": {
            "filter":{
                "range": {
                   "balance": {
                      "gte": 20000,
                      "lte": 30000
                   }
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值