(六) ElasticSearch 搜索实战

1.搜索

1)精确匹配(Term Query)

精确匹配是在指定字段中查找精确匹配指定值的文档。以下是一个精确匹配的示例,查找字段 title 的值为 “Elasticsearch is powerful” 的文档:

POST /my_index/_search
{
  "query": {
    "term": {
      "title": "Elasticsearch is powerful"
    }
  }
}

2)全文搜索(Match Query)

match 查询是一种全文搜索查询,用于在指定字段中搜索与查询字符串相匹配的文档。它将查询字符串分词后与字段中的词进行匹配,并返回匹配的文档。
注意使用match,数据类型需要时text

(1)单条:

要执行单条的 match 查询,你可以使用以下示例代码:

POST /my_index/_search
{
  "query": {
    "match": {
      "content": "Elasticsearch"
    }
  },
  "size": 10,         // 指定每页返回的文档数量
  "from": 0           // 指定从哪个文档开始返回,即偏移量
}

(2)全部:

"match_all" 是一种查询类型,它匹配索引中的所有文档,返回所有的结果。它不需要指定具体的搜索条件,仅仅是在执行查询时返回所有文档。你可以使用以下示例代码:

POST /my_index/_search
{
  "query": {
    "match_all": {
    }
  },
  "size": 10,         // 指定每页返回的文档数量
  "from": 0           // 指定从哪个文档开始返回,即偏移量
}

(3)多个字段

要在 Elasticsearch 中进行多个字段的匹配查询,你可以使用 multi_match 查询。multi_match 查询允许你在一个查询中同时匹配多个字段,并返回匹配结果。

以下是一个使用 multi_match 查询进行多个字段匹配的示例:

POST /my_index/_search
{
  "query": {
    "multi_match": {
      "query": "Elasticsearch",
      "fields": ["title", "content"],
      "operator": "and"
    }
  }
}

需要注意的是,默认情况下,Elasticsearch 使用 OR 运算符来组合多个字段的匹配结果。也就是说,只要任何一个字段匹配成功,文档就会被返回。
如果你想要更改默认行为,可以通过设置 operator 参数来指定使用 AND 运算符。这样,只有同时在多个字段中都匹配成功的文档才会被返回。

(4)短语匹配

在 Elasticsearch 中,match_phrase 查询用于短语匹配,考虑词语顺序,返回包含完整短语的文档。以下是一个使用 match_phrase 查询的示例:

POST /my_index/_search
{
  "query": {
    "match_phrase": {
      "content": "quick brown fox"
    }
  }
}

(4)前缀短语匹配

在 Elasticsearch 中,match_phrase_prefix 查询是一种组合了短语匹配和前缀匹配的查询类型。它用于匹配包含特定短语前缀的文档。

以下是一个使用 match_phrase_prefix 查询的示例:

POST /my_index/_search
{
  "query": {
    "match_phrase_prefix": {
      "content": {
        "query": "quick brown",
        "slop": 2
      }
    }
  }
}

match_phrase_prefix 查询会考虑短语前缀的顺序,并返回包含匹配短语前缀的文档。通过设置 “slop” 参数,可以指定允许的词项间的最大间隔数。默认情况下,slop 的值为 0,即要求词项严格按照顺序相邻出现。通过增加 slop 的值,可以容忍更多的间隔。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值