Elasticsearch 一些简单的 _search API

Executing Searches

Elasticsearch中执行检索时使用
/_search API,默认情况下返回匹配的document中的所有字段。

(1)返回部分结果

在elasticsearch中用_source标记。

GET /bank/_search
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}

说明:
(1)“_source”:以上例子中只返回匹配结果中的account_number和balance字段。
(2)match_all:表示匹配所有的document

返回部分结果类似sql中
select field1, field2 from table

(2)match条件匹配

特定结果的返回使用”query”属性控制。

(1)精确查询

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

这个例子返回account_number=20的所有文档。

sql中类似于:
select * from table where account_number=20

(2)模糊查询

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

返回address中包含“mill”的所有document。

sql中类似于:
select * from table where address like ‘%mill%’

(3)“或”操作查询

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

返回address中包含”mill” 或”lane”的document。 中间以空格分割。

如果想要匹配“mill lane”这个词组的时候应该怎样查询呢?

(4) 短语匹配

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

使用“match_phrase”进行句子或者短语的匹配。例子中返回address中包含”mill lane” 的document。

综上可以看到“match”可以匹配数字或者单额word,“match_phrase”才能匹配词组。

(3)bool条件匹配

bool查询帮助我们把小的查询条件组合成一个大的查询条件。

(1)组合多个match语句,表示“与”关系

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

“bool”的条件中使用的是”must”,返回所有address中包含“mill”和“lane”的document

(2)组合多个match语句,表示“或”关系

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

“bool”的条件中使用的是”should”,返回所有address中包含“mill”或者“lane”的document。

(3)组合多个match语句,表示“非”关系

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

“bool”的条件中使用的是”must not”,返回所有address中既不包含“mill”也不包含“lane”的document。

(4)多种bool条件查询混合使用

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

上面的查询语句表示查询age=40&state中不包含ID的。

综上bool在查询中嵌套在“query”的下一层,可以使用“must”,“should”,“must not”表示bool条件,也可以将不同的条件组合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值