Elasticsearch(15) multi_match的使用
elasticsearch version: 7.10.1
multi_match是Elasticsearch中的一种查询类型,允许在一个或多个字段上执行全文本搜索,并合并各个字段的结果得分。这种查询有助于实现跨多个字段的统一搜索体验。
语法
{
"query": {
"multi_match" : {
"query": "搜索文本", // 要搜索的关键词或短语
"fields": ["field1", "field2"], // 搜索涉及的字段列表
"type": "best_fields", // (可选)匹配类型,默认是"best_fields",也可以是"most_fields"、"cross_fields"、"phrase"、"phrase_prefix"等
"operator": "and", // (可选)查询词之间的关系,默认是"or",可以改为"and"
"analyzer": "standard", // (可选)使用的分析器
"minimum_should_match": 1, // (可选)最少匹配的条件,默认是基于类型的不同有不同的计算规则
"tie_breaker": 0.3, // (可选)交叉字段查询时,决定每个字段得分与整体得分之间关系的权重因子
"boost": 2.0 // (可选)提升查询的权重,会影响相关度评分
}
}
}
query:要搜索的文本。
fields:一个字段名称列表,将在这些字段上执行全文搜索。
operator: and 搜索次需要全部匹配
type:定义匹配类型,不同类型的含义如下:
- best_fields:默认类型,选取匹配分数最高的那个字段的得分。
- most_fields:综合所有字段的得分。
- cross_fields:将所有字段当作一个大的字段来处理,进行跨字段的短语查询。
- phrase:强制执行短语匹配。
- phrase_prefix:类似于phrase,但是支持前缀匹配。
例题
索引创建
PUT /blog_posts
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"body": {
"type": "text"
},
"tags": {
"type": "keyword"
}
}
}
}
文档插入
POST /blog_posts/_doc
{
"title": "How to Use Elasticsearch for Full-text Search",
"body": "In this article, we explore the power of Elasticsearch as a distributed full-text search engine.",
"tags": ["Elasticsearch", "full-text search", "distributed systems"]
}
POST /blog_posts/_doc
{
"title": "Distributed Systems Design with Elasticsearch",
"body": "Learn about how Elasticsearch can be used in designing scalable and fault-tolerant distributed systems.",
"tags": ["Elasticsearch", "distributed systems", "design patterns"]
}
POST /blog_posts/_doc
{
"title": "Understanding Elasticsearch Aggregations",
"body": "Discover the power of Elasticsearch aggregations for data analysis and exploration.",
"tags": ["Elasticsearch", "aggregations", "data analytics"]
}
POST /blog_posts/_doc
{
"title": "Scaling Elasticsearch Clusters for High Performance",
"body": "Learn techniques for scaling Elasticsearch clusters to handle large volumes of data and high traffic loads.",
"tags": ["Elasticsearch", "cluster scaling", "performance optimization"]
}
POST /blog_posts/_doc
{
"title": "Introduction to Elasticsearch Relevance Scoring",
"body": "Explore how Elasticsearch calculates relevance scores for search results to improve user experience.",
"tags": ["Elasticsearch", "relevance scoring", "search algorithms"]
}
POST /blog_posts/_doc
{
"title": "Real-time Log Analytics with Elasticsearch and Logstash",
"body": "Configure Elasticsearch, Logstash, and Kibana (ELK Stack) for real-time log processing and visualization.",
"tags": ["Elasticsearch", "Logstash", "Kibana", "log analytics"]
}
POST /blog_posts/_doc
{
"title": "Securing Your Elasticsearch Cluster",
"body": "Implement security measures to protect your Elasticsearch cluster from unauthorized access and data breaches.",
"tags": ["Elasticsearch", "security", "access control"]
}
POST /blog-posts/_doc/
{
"title": "How to use Elasticsearch Multi-Match Queries",
"body": "In this article, we discuss various types of multi_match queries in Elasticsearch.",
"tags": ["elasticsearch", "full-text search", "queries"]
}
POST /blog-posts/_doc/
{
"title": "Exploring Phrase Matching in Elasticsearch",
"body": "Learn how phrase matching works in Elasticsearch and its application in multi_match queries.",
"tags": ["elasticsearch", "phrase matching"]
}
查询语句
GET /blog-posts/_search
{
"query": {
"multi_match" : {
"query": "use Elasticsearch multi-match queries",
"fields": ["title^3", "body"],
"type": "best_fields"
}
}
}
GET /blog-posts/_search
{
"query": {
"multi_match" : {
"query": "Elasticsearch multi-match",
"fields": ["title", "body", "tags.keyword"],
"type": "most_fields"
}
}
}
GET /blog-posts/_search
{
"query": {
"multi_match" : {
"query": "\"use Elasticsearch\" multi match",
"fields": ["title", "body"],
"type": "cross_fields"
}
}
}
GET /blog-posts/_search
{
"query": {
"multi_match" : {
"query": "\"phrase matching\" in Elasticsearch",
"fields": ["title", "body"],
"type": "phrase"
}
}
}
GET /blog-posts/_search
{
"query": {
"multi_match" : {
"query": "phrase matc*",
"fields": ["title", "body"],
"type": "phrase_prefix"
}
}
}
原文地址:https://blog.csdn.net/qq_29312279/article/details/136987263
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!