当前位置: 首页 > 面试题库 >

按对象类型的大小搜索字段elasticsearch

慕健
2023-03-14
问题内容

我有一个这样的映射:

{
  "post": {
    "properties": {
      "author_gender": {
        "type": "string",
        "index": "not_analyzed",
        "omit_norms": true,
        "index_options": "docs"
      },
      "author_link": {
        "type": "string",
        "index": "no"
      },
      "content": {
        "type": "string"
      },
      "mentions": {
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "profile_image_url": {
            "type": "string"
          },
          "screen_name": {
            "type": "string"
          }
        }
      }
   }
}

我需要按mentions对象的大小进行搜索。我已经试过了:

{
  "filter": {
    "script": {
      "script": "doc['mentions'].values.length == 2"
    }
  }
}

这是行不通的。给出错误

嵌套:ElasticSearchIllegalArgumentException [在类型为[post]的映射中未找到[提及]的字段];

我还尝试过用替换脚本部分doc['mentions.id'].value.length == 2。这也是错误的

嵌套:ArrayIndexOutOfBoundsException [10];

如何查询mentions对象大小为2的记录?


问题答案:

elasticsearch指南建议对对象使用 size() 而不是 length 。所以试试这个:

{
 "filter": {
   "script": {
     "script": "doc['mentions.id'].values.size() == 2"
    }
  }
}

祝一切顺利。



 类似资料:
  • 问题内容: 我具有Room对象的以下结构。 其中,消息是具有以下结构的对象的嵌套数组 我想通过房间集合中的消息执行搜索查询。我尝试使用,但没有帮助我。 而且,我必须通过匹配值来搜索元素。我可以使用bson正则表达式来做到这一点。 总结我需要按“房间”文档中嵌套对象中的字段搜索消息。 PS对不起,可能会出现错误,英语不是我的母语。 更新 基本上,我想在给定的房间中找到包含某些子字符串的所有消息。例如

  • 我有一个前端ACF表单-ACF_表单()。使用post对象字段。我想通过自定义字段限制查询结果。下面的代码可以正常工作,除了当我尝试在搜索栏中键入时,会出现以下错误:我得到的错误是ajax响应中的PHP错误; 0:“PhpConsole\Handler”- 1:"strpos()" 2:"acf_order_by_search()" 3:“acf_field_post_object- 4:“acf

  • 问题内容: 我创建了一个表并将排序规则设置为 utf8 ,以便能够向字段添加唯一索引。现在我需要进行不区分大小写的搜索,但是当我使用collat​​e关键字执行一些查询时,我得到了: 错误1253(42000):COLLATION’utf8_general_ci’对字符集’latin1’无效 错误1267(HY000):操作’=’的排序规则(utf8_bin,IMPLICIT)和(latin1_g

  • 问题内容: 有什么方法可以根据类型在同一字段上搜索结果? 我的基本提升是这样的: 但是对于其他一些文档,我希望标题不太重要,因此我尝试使用type作为前缀: 但是,这根本没有助益。作为最后的选择,我可以使用Funcsion / Script Score bu来避免这种情况。 例如,假设文档仅包含字段。 问题答案: 实现此目的的一种简单方法是将OP中的查询重写为dis- max查询 。 elasti

  • 我有:一个实体有一个的集合,每个阶段都有一个的集合。Stage项可以有几种类型,我在JPA/Hibernate中使用它们作为带有鉴别器列的继承策略。 我需要lucene查询返回在类型a的阶段项(类中的字段)中具有特定细节的请求。我无法让hibernate搜索查看子类中的字段。 因此这个lucene查询不起作用(返回0个结果): 但基于中的字段进行搜索有效:

  • 我试图为一个业务场景制定一个查询,其中我们有一个名为“types”的嵌套字段类型(即类似于字符串的ArrayList)。下面是以“类型”作为字段之一的索引文档示例。 文件1:{“类型”:[{“标签”:“对话”,},{“标签”:“暴力”,},{“标签”:“语言”,}} 文档2:{“类型”:[{“标签”:“对话框”,}} 现在,要求搜索查询最多匹配字段值中的一个值,即如果用户搜索“对话框”,那么它应该