首页 > 其他分享 >Elasticsearch 字段多种类型处理

Elasticsearch 字段多种类型处理

时间:2025-01-07 10:21:46浏览次数:1  
标签:搜索 Ball 匹配 name keyword 处理 Dragon Elasticsearch 多种类型

背景​   在搜索引擎和数据存储中,高效处理多样化的查询需求至关重要。以公司名称和时间字段为例,这些字段可能需要同时支持全文搜索和精确匹配。Elasticsearch 提供了多字段功能,允许单个字段展示多种行为,例如分词搜索和精确匹配。本文将分析如何利用多字段功能,处理具有多种类型需求的字段,如 name 和时间字段。​ 多字段基础​   在 Elasticsearch 中,一个字段无法具备多种类型,但通过 多字段机制 (Multi-fields),同一个字段可以有多种功能,如全文搜索和精确匹配。​ 尽管一个字段只能有一个主类型,但通过属性 fields,可以为字段增加子字段,每个子字段可以有自己的类型和属性。​ 基本示例​   下面是一个多字段的配置:​

{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",  // 主字段,用于全文搜索
        "fields": {
          "keyword": { // 子字段名
            "type": "keyword",  // 子字段,用于精确匹配
            "ignore_above": 256
          }
        }
      }
    }
  }
}

 

name 字段应用场景​   想象一个情况:在一个全球化的应用中,需要搜索公司名称,比如“Dragon Ball Co., Ltd.”:​ 需求分析​   1. 支持全文搜索:​ ◦ 用户不许能输入全部名称,但输入“Dragon” 或 “Ball”,应该返回有关的文档。​   2. 支持精确匹配:​ ◦ 实际中需要精确匹配全名“Dragon Ball Co., Ltd.”,应该使用未分词的原始值进行匹配。​   选择使用多字段  
  • 全文搜索: 采用主字段 name (类型为 text),支持分词后搜索:
GET dev_companies/_search
{
  "query": {
    "match": {
      "name": "Dragon Ball"
    }
  }
}

 

  • 精确匹配: 采用子字段 name.keyword (类型为 keyword),用于匹配未分词的值:
GET dev_companies/_search
{
  "query": {
    "term": {
      "name.keyword": "Dragon Ball Co., Ltd."
    }
  }
}
  • 短语应匹配: 如果需要匹配分词序列,使用 match_phrase 及远离参数 slop

 

GET dev_companies/_search { "query": { "match_phrase": { "name": { "query": "Dragon Ball", "slop": 2 } } } }

标签:搜索,Ball,匹配,name,keyword,处理,Dragon,Elasticsearch,多种类型
From: https://www.cnblogs.com/kylin5201314/p/18657042

相关文章

  • Nodejs是如何处理高并发的?
    Node.js处理高并发的能力主要得益于其异步编程模型、事件驱动机制、以及非阻塞I/O操作。以下是从前端开发角度,对Node.js如何处理高并发的详细解释:异步编程模型回调函数(Callback):Node.js大量使用回调函数来处理异步操作。当一个操作(如数据库查询或文件读取)完成时,回调函数......
  • 如何处理云服务器远程登录提示负载过高无法登录的问题
    问题描述:尝试远程登录云服务器时,提示负载过高,无法稳定登录。如何解决这个问题?解决方案:当遇到云服务器远程登录提示负载过高无法稳定登录的问题时,可以按照以下步骤进行排查和解决:监控服务器性能:首先,使用云服务商提供的监控工具或第三方监控软件(如Prometheus、Grafana等)实时监......
  • 域名被认定为钓鱼网站后的处理方法
    问题描述: 我的域名突然被注册局认定为钓鱼网站,并被添加了Hold状态。我经营的是合法业务,怀疑是在修改程序时被入侵导致。请协助查明原因并解决此问题。回答: 您好,域名被认定为钓鱼网站并添加Hold状态是一个严重的问题,需要尽快处理以恢复正常运营。以下是详细的排查步骤和解决方......
  • 如何处理云服务器远程桌面访问问题
    问题描述:用户报告无法通过Web界面访问云服务器的远程桌面,怀疑可能是VNC固定端口受到攻击或端口未开放导致的问题。用户希望了解如何解决远程桌面访问失败的问题。解决方案:确认远程桌面连接方式:确保您使用的远程桌面连接工具和协议正确无误。常见的远程桌面工具包括:Windows......
  • 第22章 高级线程处理
    第22章高级线程处理22.1同步概述多线程我们常需要一些同步结构进行线程间通讯。同步结构可以分为三类:互斥锁一次只允许一个线程执行特定的活动或一段代码。主要目的是令线程访问共享的写状态而不互相影响。互斥锁包括lock​、Mutex​和SpinLock​。2.非互斥锁实现......
  • Matlab代码基于辛几何模态分解的信号处理方法SGMD
    Matlab代码基于辛几何模态分解的信号处理方法SGMDfunctionsgc=SGMD(x,fs,tau,threshold_corr,threshold_nmse,varargin)%2023/03/15%基本参数:%x列表,输入一个信号x,%fs整数,x的采样频率,%threshold_corr浮点数,相关系数的阈值(可选,默认为0.......
  • 动手学深度学习-python基础知识介绍(数据处理基础流程)part2
    数据预处理importosos.makedirs(os.path.join('..','data'),exist_ok=True)data_file=os.path.join('..','data','house_tiny.csv')withopen(data_file,'w')asf:f.write('NumRooms,Alley,Price\n&......
  • Dexcap复现代码数据预处理全流程(五)——demo_create_hdf5.py
    此脚本的主要目的是从此前处理的数据集目录中读取多个子目录(每个子目录也是一个独立的数据集),对数据进行处理,并将处理后的数据保存到HDF5文件中1库引用fromdataset_utilsimport*2 指定数据集路径#定义原始数据集的主目录路径#需要替换[PATH_TO_RAW_DATA_DOWNL......
  • Elasticsearch 支持哪些中文分词器?
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 【SD教程】一文教你图生图批量处理!
    今天给大家讲解一下SD图生图的批量处理功能应该如何让使用~(AI绘画SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,无需自行查找,有需要的小伙伴文末扫码自行获取。)一、图生图批量处理功能的基本用法首先打开webUI,在图生图页面下我们先找到批量......