ElasticSearch 脚本:检查数组是否包含值

2024-04-08

假设我创建了一个这样的文档:

PUT idx/type/1
{
   "the_field": [1,2,3]
}

我可以使用 GET /idx/type/1 检索我的文档:

{
   "_index": "idx",
   "_type": "type",
   "_id": "1",
   "_version": 1,
   "found": true,
   "_source": {
      "the_field": [
         1,
         2,
         3
      ]
   }
}

现在,我想检查字段“the_field”是否包含值 2。 我知道我可以使用术语子句,但我需要使用过滤器脚本检查这一点,所以我尝试了:

POST /idx/typ/_search
{
    "query": {
        "match_all": {}
    }, 
    "filter": {
        "script": {
           "script": "doc['the_field'].values.contains(2)"
        }
    }
}

并没有得到结果:

{
   "took": 6,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
   }
}

为了测试我的 mevl 脚本语法是否正确,我尝试这样做:

POST /idx/type/_search
{
    "query": {
        "match_all": {}
    }, 
    "filter": {
        "script": {
           "script": "[1,2,3].contains(3)"
        }
    }
}

并得到正确的结果:

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "idx",
            "_type": "type",
            "_id": "1",
            "_score": 1,
            "_source": {
               "the_field": [
                  1,
                  2,
                  3
               ]
            }
         }
      ]
   }
}

我究竟做错了什么?

我认为 doc['the_field'].values 应该返回 [1,2,3],不是吗?如果是这样,我的代码应该可以工作。

有人可以帮助我吗? 谢谢你!

UPDATE

当我将代码中的所有 [1, 2, 3] 替换为 ["a"," b", "c"] 时,它就起作用了。任何想法?


它正在与“a”,“b”,“c”一起工作,因为the_field默认情况下作为字符串而不是整数存储在 Elasticsearch 中。您可以通过检查映射来验证:

 $ curl -XGET 'http://localhost:9200/idx/type/_mapping'

以下内容应设置适当的字段类型:

 $ curl -XPUT 'http://localhost:9200/idx/type/_mapping' -d '
 {
    "type" : {
        "properties" : {
            "the_field" : {"type" : "integer" }
         }
     }
 }

更新映射,重新索引数据并查看是否有效。请参阅PUT 映射 API http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-put-mapping.html如果需要的话,获取额外的指导。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch 脚本:检查数组是否包含值 的相关文章

  • 如何在 Elasticsearch NEST 中序列化 JToken 或 JObject 类型的属性?

    我正在将 Elasticsearch 引入 C API 项目 我想利用现有的 API 模型作为搜索文档 其中许多模型允许添加自定义数据点 这些是使用JObject https www newtonsoft com json help htm
  • 如何连接Kafka和Elasticsearch?

    我是Kafka的新手 我使用kafka通过logstash收集netflow 可以 并且我想将数据从kafka发送到elasticsearch 但是存在一些问题 我的问题是如何将 Kafka 与 Elasticsearch 连接起来 net
  • Elasticsearch 中的分析器有什么用?

    我在理解弹性搜索分析器时遇到一些问题 它的用途是什么以及如何使用它 From 本文 https www elastic co blog found text analysis part 1 有来自源文本的分词器和分词过滤器 我是否无法理解来
  • 如何用Python为ElasticSearch创建只读客户端?

    我想从 ES 读取数据 但不想意外向其中写入数据 无索引操作 这只是一种安全措施 以便以后修改查询函数的其他人不允许插入数据 当你说你想要只读客户端时 客户端强调您系统中的同一集群可能有其他客户端 然后阻止整个索引为只读将会阻止所有客户端的
  • 在ElasticSearch中搜索没有时间的日期字段值

    我的数据中有一个日期字段为 type date format dateOptionalTime 现在我的日期字段和值是 INITIAL EXTRACT DATE 2015 04 02T06 47 57 78 05 30 在搜索时 我仅根据
  • Elasticsearch 崩溃后无法恢复

    磁盘空间不足 导致 Elasticsearch 分片崩溃 三个节点现在为红色 两个节点已恢复 它们的状态为黄色 ES 的 CPU 利用率为 150 内存利用率很高 正在尝试恢复它们 但似乎存在一些版本匹配冲突 我清理了磁盘空间并删除了分片的
  • 分面搜索的后过滤器和全局聚合之间有什么区别?

    搜索界面中的一个常见问题是您想要返回结果的选择 但可能想返回有关所有文档的信息 例如 我想查看所有红色衬衫 但想知道什么 其他颜色可供选择 这有时被称为 多面结果 或者 多面导航 这Elasticsearch 参考中的示例 https ww
  • 了解elasticsearch如何在内部存储日期

    我想了解 ES 如何在其索引内部存储日期值 它会转换为 UTC 吗 我有一个日期类型的字段 t 这是映射 t type date 现在 当我向 ES 插入 添加文档时 它如何存储在索引中 t 1427700477165 从 Date now
  • 如何在logstash.conf文件中创建多个索引?

    我使用以下代码在logstash conf中创建索引 output stdout codec gt rubydebug elasticsearch host gt localhost protocol gt http index gt tr
  • elasticsearch查询字符串分析器针对不同字段使用不同的分析器

    当对具有不同分析器 stem ngram等 的多个字段执行查询时 elasticsearch是否对每个字段的查询字符串执行特定的分析 是的 除非您在查询中指定分析器 这请求参数 http www elasticsearch org guid
  • 从 App Engine 连接到 Kubernetes 引擎

    我们希望使用应用程序引擎灵活的流程来更新位于 Google Kubernetes Engine 上的 ElasticSearch 索引 我们需要通过 http s 地址连接到 ElasticSearch 推荐的方法是什么 我们不想将集群暴露
  • 在 Elastic 搜索中加载示例数据集时出错

    您好 我正在尝试加载示例数据集参考弹性搜索文档 https www elastic co guide en elasticsearch reference current exploring your data html但是当我尝试运行指示
  • 我们可以同时使用拼音标记和同义词吗?

    我正在尝试同时启用语音分析器和同义词 这似乎不起作用 它们一起使用有错吗 在下面的实现中 我希望使用同义词转换搜索查询 然后使用语音分析器来检索结果 但我的同义词在这里完全被忽略了 如果我在创建索引时删除语音分析器 那么同义词就可以正常工作
  • Nest Elastic - 构建动态嵌套查询

    我必须使用 Nest 查询嵌套对象 但是查询是以动态方式构建的 下面的代码演示了以静态方式对嵌套 书籍 进行查询 QueryContainer qry qry new QueryStringQuery DefaultField name D
  • 弹性搜索 - search_after 参数

    我读了这个doc https www elastic co guide en elasticsearch reference 5 0 search request search after html要理解 search after 并有两个
  • search_after 在弹性搜索中如何工作?

    我一直在尝试在我们的应用程序中使用 Elasticsearch 但分页限制为 10k 对我们来说实际上是一个问题 并且由于必须超时问题 滚动 API 也不是推荐的选择 我发现 Elasticsearch 有一个叫做 search after
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • 如何增加vm.max_map_count?

    我正在尝试在 Ubuntu EC2 计算机 t2 medium 中运行弹性搜索 但我收到消息 最大虚拟内存区域 vm max map count 65530 太低 至少增加到 262144 我怎样才能增加vm max map count v
  • NEST 1.0:请参阅 Fiddler 上的请求

    我刚刚更新到 NEST 1 0 我在远程服务器 不是本地主机 上有 Elastic Search 通常我在使用 Fiddler 发送和接收请求时没有任何问题 更新后 bammm 没有检测到任何请求 但我的应用程序发出这些请求没有任何问题 你
  • Elasticsearch Nest 通配符查询(带空格)

    简洁版本 我想使用 Nest 编写一个弹性搜索查询来获取完整的索引项 ContentIndexables在我的例子中作为我的自定义类型 已被索引 该查询受 some string 术语查询的约束 即 String StartsWith 其中

随机推荐

  • 提高 SURF 在小图像上的性能

    我在网络上遇到的每个 SURF 实现似乎都特别不擅长从小图像 例如 100x100 或更小 中提取有用数量的兴趣点 我尝试了多种方法 1 使用各种放大算法 从简单的最近邻算法到更高级的算法 基本上每个放大器 imagemagick 都提供
  • 如何更新 Haskell Map 中的项目?

    我是 Haskell 的新手 正在尝试找出一个合理的方法 写入地图的方式 为解决特定问题做准备 欧拉工程问题 我希望写一个函数来填充 带有记录的地图 但我无法让它发挥作用 let似乎创建局部变量而不是治疗smap作为一个全球性的 一定有某种
  • 使用javamail连接到hotmail?

    我想知道是否可以使用JavaMail 连接到Hotmail 我已经尝试过 但它不起作用 连接被拒绝 String host pop3 live com String username email protected cdn cgi l em
  • 自定义 QML 模块部署到 Android:缺少 QML 依赖项

    我正在开发一个包含一些特殊类型的自定义 QML 模块 我们称之为 MyModule 它用作其他应用程序项目的预编译库 即源代码对它们不可用 它通过 import MyModule 1 0 设置必要的导入路径等来使用 该模块包含基于 C 的
  • 过渡导航栏标题

    在一个名为 Luvocracy 的应用程序中 当用户在屏幕上向上滑动时 导航栏的标题会发生变化 旧标题被推高 而新标题则过渡进来 我现在没有视频 但这里有一些屏幕截图 https www dropbox com s sns0bsxkdv7p
  • 安全存储客户端敏感数据

    背景故事我在一家中小型公司工作 我们正在重新设计面向客户的会计门户 我的经理希望使用存储在最终用户计算机上的 cookie 中的信用卡信息来进行单击付款选项 我根本不喜欢这个想法 事实上我仍在努力改变他的想法 话虽这么说 我正在努力使其尽可
  • 如何在 alpine.js 应用程序中制作具有时间间隔的计时器

    使用 alpine js 2 我尝试在应用程序的页脚 为所有布局设置 中定义计时器 div div div span style background color yellow span div div div
  • 如何查看浏览器请求?

    我正在与另一位程序员合作 他最近向我发送了一个新的基于 JSON 的 API 来工作 他说我可以通过访问特定网站并查看浏览器请求来查看所有 API 调用的示例 我的问题是 如何查看我的浏览器请求 我之前曾使用 Wireshark 来分析我的
  • JAVA ANDROID - 获取文件夹的文件列表

    我想在一个文件夹中显示不同文件夹的图像GridView 但我不知道需要做什么才能获取包含可绘制文件夹内的文件名称的列表 此方法将为您提供一个包含 dir 文件夹列表以及子文件夹列表的列表 public void listf String d
  • 从调用者类停止异步 Spring 方法

    我有一个类调用 Rest Web 服务来从服务器接收文件 在传输字节时 我创建了一个异步任务 它检查与服务器的连接是否正常 以便在出现错误时允许停止连接 这个异步任务有一个我必须停止的循环 Component public class Co
  • POJO 反序列化期间忽略 @JsonTypeInfo 属性

    我使用 JsonTypeInfo 指示 Jackson 2 1 0 在 鉴别器 属性中查找具体类型信息 这很有效 但在反序列化期间 鉴别器属性没有设置到 POJO 中 根据 Jackon 的 Javadoc com fasterxml ja
  • CMake 未从 conan 中找到 boost 库

    所以我试图让我的 cmake 与 conan boost 一起工作 为此 我有一个简单的柯南文件 from conans import ConanFile class Boost Conan Cmake MinimalConfig Cona
  • 迭代Python字典并特殊追加到新列表?

    我想迭代字典 并将按其值 频率 重复的每个键 字母 附加到新列表中 例如 输入 A 1 B 2 预期输出 A B B 我正在做的事情不起作用 我应该在函数中写什么来做到这一点 def get freq dict freq dict J 1
  • 批处理文件中的文件时间超过 4 分钟

    我正在使用这个脚本来计算文件的时间 set filename myfile txt rem extract current date and time for f tokens 1 5 delims a in date time do se
  • 反应路由器路径内的问号

    我正在尝试在 URL 中传递参数 但读取时遇到问题 我正在使用反应路由器 v4 URL http localhost 3000 reset token 123 http localhost 3000 reset token 123我试着这样
  • 带有react-router-dom NavLinks的react-bootstrap导航栏中的collapseOnSelect

    我正在制作一个网站 在其中使用 React router dom NavLink 组件来防止单页面应用程序体验的重新渲染 当我试图使网站响应时 我一直在尝试使响应式导航栏在选择 NavLink 后从 React Bootstrap 折叠 但
  • 插入 Base64 图像作为 WordPress 帖子附件

    我正在将画布转换为 base64 png 图像 现在我想将此图像添加为帖子附件 这是我在服务器端的图像 image base64 decode preg replace data image w base64 i data pdf thum
  • 使用php脚本在csv文件中插入图像[重复]

    这个问题在这里已经有答案了 可能的重复 PHP代码可以将图像插入Excel文件并在MS Excel中正确打开它吗 https stackoverflow com questions 11337142 php code can insert
  • 函数 sum 无法正常工作 javascript [重复]

    这个问题在这里已经有答案了 当我添加两个字段时 代码不会对其进行求和 而是添加我输入的内容 这是我的代码 function calculate loan var amountBorrowed document form amountBorr
  • ElasticSearch 脚本:检查数组是否包含值

    假设我创建了一个这样的文档 PUT idx type 1 the field 1 2 3 我可以使用 GET idx type 1 检索我的文档 index idx type type id 1 version 1 found true s