当前位置: 首页 > news >正文

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"}}
}
http://www.lryc.cn/news/327296.html

相关文章:

  • nodejs的线程模型和libuv库的基本使用
  • Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e
  • 深度学习pytorch——激活函数损失函数(持续更新)
  • 《苹果 iOS 应用开发与分发的关键问题解析》
  • 爱上数据结构:顺序表和链表
  • python知识点总结(十)
  • 【Python】探索 Python 编程世界:常量、变量及数据类型解析
  • vue页面实现左右div宽度,上下div高度分割线手动拖动高度或者宽度自动变化,两个div宽度或者高度拉伸调节,实现左右可拖动改变宽度的div内容显示区
  • 知攻善防应急靶场-Linux(1)
  • ffmpeg命令行
  • VMware虚拟机更换引导顺序
  • RAFT:让大型语言模型更擅长特定领域的 RAG 任务
  • Stable Diffusion 本地训练端口与云端训练端口冲突解决办法
  • C++学习day1
  • openGauss CM
  • 北斗短报文+4G应急广播系统:实时监控 自动预警 保护校园安全的新力量
  • 2024河北石家庄矿业矿山展览会|河北智慧矿山展会|河北矿博会
  • ruoyi使用笔记
  • 论文《Exploring to Prompt for Vision-Language Models》阅读
  • 科普 | Runes 预挖矿概念
  • 蓝桥杯真题Day40 倒计时19天 纯练题!
  • Android 14.0 SystemUI下拉状态栏增加响铃功能
  • docker学习笔记 二-----docker介绍
  • 螺旋矩阵的算法刷题
  • 蓝桥杯算法赛(二进制王国)
  • 7.JDK下载和安装
  • Java序列化之Jackson详解
  • 深入Facebook的世界:探索数字化社交的无限可能性
  • HTML 怎么解决上下标问题呢?
  • 题目 2880: 计算鞍点