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 查询的示例:文章来源:https://www.toymoban.com/news/detail-515963.html
POST /my_index/_search
{
"query": {
"match_phrase_prefix": {
"content": {
"query": "quick brown",
"slop": 2
}
}
}
}
match_phrase_prefix 查询会考虑短语前缀的顺序,并返回包含匹配短语前缀的文档。通过设置 “slop” 参数,可以指定允许的词项间的最大间隔数。默认情况下,slop 的值为 0,即要求词项严格按照顺序相邻出现。通过增加 slop 的值,可以容忍更多的间隔。文章来源地址https://www.toymoban.com/news/detail-515963.html
到了这里,关于(六) ElasticSearch 搜索实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!