首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

弹性搜索在多值字段上不返回结果过滤

弹性搜索是一种基于Elasticsearch的全文搜索引擎,它能够快速高效地处理大规模数据的搜索和分析。然而,在多值字段上进行搜索时,弹性搜索可能会遇到一些问题,导致不返回结果过滤的情况。

多值字段指的是一个文档中某个字段可以包含多个值,例如一个商品文档的标签字段可以包含多个标签。在进行弹性搜索时,如果我们想对多值字段进行精确匹配或过滤,就需要使用到特定的查询方式。

为了解决在多值字段上搜索不返回结果过滤的问题,可以采用以下方法:

  1. 使用"term"查询:通过使用"term"查询来精确匹配多值字段中的某个值。这样可以确保搜索结果的准确性。例如,如果我们想搜索包含标签为"电影"的商品,可以使用以下查询:
  2. 使用"term"查询:通过使用"term"查询来精确匹配多值字段中的某个值。这样可以确保搜索结果的准确性。例如,如果我们想搜索包含标签为"电影"的商品,可以使用以下查询:
  3. 这里的"tags"表示多值字段名,"电影"是我们要匹配的值。
  4. 使用"terms"查询:如果我们想要匹配多个值,可以使用"terms"查询来实现。这样可以同时匹配多个值,并返回相应的结果。例如,如果我们想搜索包含标签为"电影"和"音乐"的商品,可以使用以下查询:
  5. 使用"terms"查询:如果我们想要匹配多个值,可以使用"terms"查询来实现。这样可以同时匹配多个值,并返回相应的结果。例如,如果我们想搜索包含标签为"电影"和"音乐"的商品,可以使用以下查询:

总结一下,弹性搜索在多值字段上进行搜索时,可以使用"term"查询实现单个值的匹配,使用"terms"查询实现多个值的匹配。这样可以确保搜索结果的准确性和完整性。

关于弹性搜索的更多详细信息和使用方式,您可以参考腾讯云的Elasticsearch产品介绍页面:https://cloud.tencent.com/product/es。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Elasticsearch 6.x版本全文检索学习之聚合分析入门

答:聚合分析,英文为Aggregation,是es除搜索功能外提供的针对es数据做统计分析的功能。...b、多值分析,输出多个分析结果。...4、Metric聚合分析中单值分析的使用,如下所示: 返回数值类字段的最小值。 ? 返回数值类字段的最大值、返回数值类字段的平均值。 ? 返回数值字段的总和,一次返回多个聚合结果。 ?...5、Metric聚合分析中多值分析的使用。如下所示: 多值分析之Stats,返回一系列数值类型的统计值,包含min、max、avg、sum和count。...filter为某个聚合分析设定过滤条件,从而在更改整体query语句的情况下修改了作用范围。 ? post-filter作用于文档过滤,但在聚合分析后生效。 ?

1.1K20

ElasticSearch权威指南:基础入门(中)

hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回搜索结果中使用整个文档。...而且很脆弱,一些查询字符串中很小的语法错误,像 - , : , / 或者 " 匹配等,将会返回错误而不是搜索结果。...最后,查询字符串搜索允许任何用户索引的任意字段执行可能较慢且重量级的查询,这可能会暴露隐私信息,甚至将集群拖垮。...为什么 _all 字段查询日期返回所有推文,而在 date 字段只查询年份却没有返回结果?为什么我们 _all 字段和 date 字段的查询结果有差别?...分析器 实际是将三个功能封装到了一个包里: 字符过滤器 首先,字符串按顺序通过每个 字符过滤器 。他们的任务是分词前整理字符串。

5.9K41
  • LDAP协议介绍

    这也称为等价搜索:cn=Ray Kultgen 下列过滤返回所有包含通用名 Ray Kultgen 的条目:(!...(cn=Ray Kultgen)) 下列过滤返回的所有条目中都有包含子字符串 X.500 的说明属性:description=*X.500* 下列过滤返回所有组织单元为 Marketing 且说明字段包含子字符串...(objectClass=person)) 下列过滤返回所有代表人员且通用名近似于 printer3b 的条目:(&(!...-z 返回结果的最大数量 搜索“操作属性” LDAP搜索中,操作属性默认情况下是不会跟随搜索结果返回的。...搜索“操作对象类”的条目 LDAP中Role、CoS等对象被定义为特殊的Object Class——操作对象类(operational object class),一般的搜索中,这类对象是不会作为结果返回给用户的

    3K10

    白话Elasticsearch04- 结构化搜索之使用terms query搜索多个值以及多值搜索结果优化

    文章目录 terms概述 准备数据 小例子 搜索articleID为KDKE-B-9947-#kL5或QQPX-R-3956-#aD8的帖子 搜索tag中包含java的帖子 优化搜索结果,仅仅搜索tag...where col in ("value1","value2"......) ---- 准备数据 为了演示terms, 我们再新增个tag字段吧 POST /forum/article/_bulk {...---- 优化搜索结果,仅仅搜索tag只包含java的帖子 上面的第二个例子中,搜索java ,可以看到返回了3条结果,其中 "tag": [ "java",...为了达到该效果,我们新增个tag_cnt字段 ,用数量来过滤下 POST /forum/article/_bulk {"update":{"_id":"1"}} {"doc":{"tag_cnt":2}...---- 总结一下: terms多值搜索 优化terms多值搜索结果,可以增加个cnt字段标示一下,组合过滤 terms相当于SQL中的in语句

    76120

    ElasticSearch权威指南学习(映射和分析)

    返回的信息显示了date字段被识别为date类型。 date类型的字段和string类型的字段的索引方式是不同的,因此导致查询结果的不同 确切值(Exact values) vs....”或“查全率” 字符过滤器 首先字符串经过字符过滤器(character filter),它们的工作是标记化前处理字符串。...换言之,以全文形式索引此字段。 not_analyzed 索引这个字段,使之可以被搜索,但是索引内容和指定值一样。不分析此字段。 no 索引这个字段。这个字段不能为搜索到。...多值字段 我们可以索引一个标签数组来代替单一字符串: { "tag": [ "search", "nosql" ]} 对于数组不需要特殊的映射。...事实,Lucene没法存放null值,所以一个null值的字段被认为是空字段

    1.1K10

    快速学习ES6-查询

    total:搜索到的总条数 max_score:所有结果中文档得分的最高分 hits:搜索结果的文档对象数组,每个元素是一条搜索到的文档信息 _index:索引库 _type:文档类型 _id:文档...3.1.3 多字段查询(multi_match) multi_match与match类似,不同的是它可以多个字段中查询 GET /heima/_search { "query":{...默认情况下,elasticsearch搜索结果中,会把文档中保存在_source的所有字段返回。...如果我们需要在查询结果中进行过滤,并且不希望过滤条件影响评分,那么就不要把过滤条件作为查询条件来用。...无查询条件,直接过滤 如果一次查询只有过滤,没有查询条件,希望进行评分,我们可以使用constant_score取代只有 filter 语句的 bool 查询。

    1K10

    022.基于IT论坛案例学习Elasticsearch(一):Filter相关知识

    ,直接拿去倒排索引中进行精确匹配 # 根据用户ID搜索帖子(返回2条结果) GET /article/_doc/_search { "query": { "constant_score":...term": { "hidden": false } } } } } # 根据发帖日期搜索帖子(返回2条结果) GET /article/_...01-01 * * 2017-02-02 * * 2017-03-03 * * * 到倒排索引中查询,发现"2017-02-02"对应的document list是doc2,doc3 ES为每个倒排索引中搜索到的结果...,小segment很快就会跟其他小segment合并成大segment,此时就缓存也没有什么意义了 filter(只是简单过滤数据,不计算评分也排序)比query(返回结果进行评分、相关度排序)的优势就在于它的...}}, {"terms": {"tag": ["java"]}} ] } } } } } 知识点总结: terms:多值搜索

    46930

    美团点评广告实时索引的设计与实现

    变长字段存储扩展区(ext区),仅在doc中存储其扩展区的偏移量和长度。与大部分搜索引擎的列存储不同,将data区按行存储,这样可针对业务场景,尽可能利用CPU与内存之间的缓存来提高访问效率。...Search:返回正排过滤后的ResultSet,内部组合了对DoSearch和DoFilter的调用 DoSearch:查询doc,返回原始的ResultSet,但并未对结果进行正排过滤 DoFilter...由filter参数定义各类正排表字段过滤,多个键值对由“;”分割,支持单值字段的关系运算和多值字段的集合运算。...如果获取失败返回默认值def_value GetMultiValue:读取多值字段的值,返回指向值数组的指针,数组大小由size参数返回。...层级绑定在定义输出消息包含的字段时完成,即定义消息的时候需要定义这个消息的主键在哪一个层级,同时绑定一系列的DFP到消息。 这样,DFP只需单纯地描述字段内容的生成逻辑。

    2.6K40

    Elastic 5分钟教程:使用EQL获取威胁情报并搜索攻击行为

    为了说明这一点让我们来看看Palo AltoSofacy提供的一份威胁报告这是关于Unit24的,该组织也称为APT 28这份报告概述这次袭击方面做得很出色感染的细节和每一步都有描述阅读了这份报告后任何级别的安全分析师都可以通过报告中的详细信息和威胁搜寻入侵行为让我们从基本的搜索开始输入所提供的...BAT文件的形式此恶意软件名为:CDnver.bat回到EQL playground让我们根据文件事件类别输入下一个查询在这里,您可以输入查询: 并等待呈现的事件返回结果将字符串\“cdnver.bat...\”用*表示的通配符括起来并使用冒号表示区分大小写将允许我们跨数据集进行灵活的搜索就像前面的例子一样我们可以获得主机名的详细信息和此文件中存在的用户以及创建文件时的时间戳从事件渲染器您可以使用分析器视图进行进一步分析现在...\“*cdnver.dll*\”正在查找进程名称为rundll32.exe的事件并且包含*cdnver.dll*的进程参数提供搜索灵活性呈现的事件返回结果从这里开始该视图与我们前面的查询类似其中我们可以获得更多详细信息并进一步分析这些信息使用分析器视图最后一个示例将稍微复杂一些...,因为它用到了sequencesEQL中的sequences允许您想象一系列有序的事件在此查询中,我们要搜索Rundll32.exe启动后建立网络连接并使用cidnmtch字段过滤连接到私有IP地址的那些事件此查询功能强大因为它与威胁情报报告中的行为相匹配但并不依赖于入侵指标一旦验证并提交了查询事件呈现器返回结果采用与前面示例类似的格式从这里

    2.6K73

    Go Elasticsearch 查询快速入门

    对应的 RESTful api 为: GET /es_index_userinfo/_doc/1 如果只想返回部分字段,可以使用_source_includes或_source_excludes参数来包括或过滤掉特定字段...,因为 text 类型的字段会被分词,如果分词的结果包含整个字段内容,那么将无法匹配,因为 term 匹配是和分词的结果匹配。...假设“我爱中国”的分词结果为“我”、“爱”、“中国”,那么搜索“我是第一名”也会匹配,因为“我是第一名”的分词结果中也有“我”。 ES 查看某个字段数据的分词结果。...条结果作爲最终的返回值。...每次查询后,输入一次的 scroll_id。目前官方已经推荐使用这个 API 了,使用search_after 即可。

    8.8K40

    如何通过python操作ES数据库 pythonElasticsearch入门

    failed 搜索失败的分片数量。 hits 搜索结果集。项目中,我们需要的一切数据都是从hits中获取。 total 返回多少条数据。 max_score 返回结果中,最大的匹配度分值。..._source 索引库中类型,返回结果字段指定的话,默认全部显示出来。...参考资料ElasticSearch之查询返回结果字段含义 最直接的查询方法 print(es.search(index='es_zilongtest')) 只需指定索引(数据库),会返回数据库中的信息...,可以设定过滤字段 # 有过滤字段查询数据 body ={ 'from':0, #从0开始 } # 定义过滤字段,最终只显示此此段信息 hits.hits....对于查询结果字段不理解的可以看查询数据中的查询结果返回参数各字段含义一节 参考资料: 1 python操作ES数据库 2 下一阶段阅读的内容,掌握更加详细的 Python Elasticsearch api

    3.9K51

    搜索优化经验集--召回

    搜索工程的整体架构,大的流程与推荐、广告并没有太大的区别:核心都是召回、粗排、精排、重排。经过重重筛选,最终从海量资源池中,返回用户需要的资源,展示出来。...召回整体的架构示意图如下:图片其中:merge 层负责解析分词结果,并决定以何种方式(求交、求并)请求分库。最终归并各分库的结果返回给上游。...相比mysql而言,存储引擎支持多值类型,会使得计算更为复杂。rbm存储如前文所述,计算是召回逻辑的关键环节。拉链交并处理得到的每一个文档,都要经过过滤语法树的计算,通常是十万级别。...以字符串比较为例:用户需要查找标签满足【玄幻、国漫】一个条件的短视频,每个视频文档、该字段为一个多值字符串类型,例如:【玄幻、武侠、日漫、...】五到十个字符串。...需要注意的是,cache实际是以空间换时间,业务场景不同,采取的策略可能不尽一致。如果过滤条件是用户筛选的结果,可能不能粗暴的做bitset cache。

    1.4K41

    Elasticsearch 之聚合分析入门

    首先举一个生活中的例子,这个是京东的搜索界面,搜索框中输入“华为”进行搜索,就会得到如上界面,搜索框就是我们常用的搜索功能,而下面这些,比如分类、热点、操作系统、CPU 类型等是根据 ES 的聚合分析获得的相关结果...看完上面这个例子,下面来看下聚合的定义: ES 除了搜索以外,还提供针对 ES 数据进行统计分析的功能,也就是聚合,它的特点是实时性非常高,所有的计算结果都是即时返回的,而 Hadoop 等大数据系统得到一个统计结果需要一天的时间...通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单个文档,比如海淀区和东城区的客房数量,不同价格区间,可预订的经济型酒店和商务型酒店的数量,这样可以帮助我们过滤搜索结果,这样的优点是性能高...简单了解了 Bucket 聚合分析后,让我们来看下 Metric 聚合分析: Metric Aggregation Metric 是基于数据集计算的结果,除了支持字段上进行计算,同样也支持脚本产生的结果之上进行计算...我们在请求中加入 aggs,其中 avg_price 为自己定义的名字,这个是为了方便在以后理解这个字段返回值的含义,然后分别关键词分别选择 avg、max、min 来完成计算目的地不同的航班的机票均价

    1.1K20

    Elasticsearch聚合 之 Terms

    举个例子: 我们想要获取name字段中出现频率最高的前5个。 此时,客户端向ES发送聚合请求,主节点接收到请求后,会向每个独立的分片发送该请求。 分片独立的计算自己分片的前5个name,然后返回。...当所有的分片结果返回后,主节点进行结果的合并,再求出频率最高的前5个,返回给客户端。 这样就会造成一定的误差,比如最后返回的前5个中,有一个叫A的,有50个文档;B有49。...有可能第一个分片中B的信息有2个,但是没有排到前5,所以没有最后合并的结果中出现。这就导致B的总数少计算了2,本来可能排到第一位,却排到了A的后面。...size参数规定了最后返回的term个数(默认是10个) shard_size参数规定了每个分片返回的个数 如果shard_size小于size,那么分片也会按照size指定的个数计算 通过这两个参数...order排序 order指定了最后返回结果的排序方式,默认是按照doc_count排序。

    2.1K60

    看完这篇还不会 Elasticsearch 搜索,那我就哭了!

    URI Search 有很多参数可以指定,除了 q 还有如下参数: df:默认字段指定时会对所有字段进行查询 sort:根据字段名排序 from:返回的索引匹配结果的开始值,默认为 0 size:搜索结果返回的条数...": {} } } 最好在“数字型”与“日期型”字段上排序,因为对于多值类型或者分析过的字段排序,系统会选一个值,无法得知该值。...如果 _source 的数据量比较大,有些字段也不需要拿到这个信息,那么就可以对它的 _source 进行过滤,把需要的信息加到 _source 中,比如以下请求就是 _source 中只返回 title...搜索的相关性(Relevance) 那么我们平时搜索的时候,比如输入小米手机,会返回很多结果,从用户角度关心的有:是否找到所有相关的内容,有多少不相关的内容被返回了,比如输入的小米手机的时候不应该返回粮食的小米给用户...那么我们可以得到: 查准率等于正确的搜索结果除以全部返回结果,即 Precision = tp / ( tp + fp ) 查全率等于正确的搜索结果除以所有应该返回结果,即 Recall = tp

    80420

    Elastic Stack——Elastic Stack简介和Elasticsearch核心详解

    文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段多值字段(multivalued)。 每个字段的类型,可以是文本、数值、日期等。...2.5.1、创建非结构化索引 Lucene中,创建索引是需要定义字段名称以及字段的类型的,Elasticsearch中提供了非结构化的索引,就是不需要创建索引结构,即可写入数据到索引中,实际Elasticsearch...size=2&from=2 应该当心分页太深或者一次请求太多的结果结果返回前会被排序。但是记住一个搜索请求常常涉及多个分 片。...你可以看到分布式系统中,排序结果的花费随着分页的深入而成倍增长。这也是为什么网络搜索引擎中任何 语句不能返回多于1000个结果的原因。...建议: 做精确匹配搜索时,最好用过滤语句,因为过滤语句可以缓存数据。

    1.6K30
    领券