在 ElasticSearch 7+ 中,如何搜索所有文本字段?

2024-04-28

我想在 Elasticsearch 7.3 中存储的文档中搜索单词

我希望在以前版本的 Elasticsearch 上运行的一个示例是:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "_all": "oliver"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 10,
  "sort": [],
  "aggs": {}
}

但这个查询在 Elasticsearch 7+ 上不起作用,因为_all已被删除。既然现在我该如何编写查询来完成同样的事情_all场没了?

注意:我已阅读使用建议copy_to将所有字段复制到自定义字段中,但这需要显式写出要包含在 all_fields 字段中的每个字段。由于我有很多小字段,我试图避免这种情况,而是复制能够查询 _all 允许的行为。


我也遇到过类似的情况。据我所知,有两种方法可以在没有 _all 字段的情况下搜索世界中的所有文本字段。

最优化的方法可能是使用简单查询字符串 https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-simple-query-string-query.html or 请求参数 https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-query-string-query.html询问。默认情况下,这些将搜索所有字符串(文本或关键字)字段。

如果由于某种原因,您需要一个包含所有文本标记的显式字段,例如_all字段,您可以创建自己的字段。您可以使用"copy_to": "_all"在显式映射的文本或关键字字段上以包含已知字段,但这只能解决一半的问题。要在此字段中包含未知字段,您还需要创建一个动态模板 https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html"copy_to": "_all"映射。动态模板专门匹配动态字段,因此如果将其与显式映射字段上的 copy_to 结合使用,您应该拥有一个包含来自已知和未知字段的所有文本标记的字段。这不是最佳选择的原因是这会对数据库的大小产生重大影响。这是一个简单的映射示例,应该可以实现您想要的功能:

  {
    "mappings": {
      "dynamic_templates": [
        {
          "all_text": {
            "match_mapping_type": "string",
            "mapping": {
              "copy_to": "_all",
              "type": "text"
            }
          }
        }
      ],
      "properties": {
        "_all": {
          "type": "text"
        },
        "email": {
          "type": "text",
          "copy_to": [
            "_all"
          ]
        },
        "name": {
          "type": "keyword",
          "copy_to": [
            "_all"
          ]
        }
      }
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ElasticSearch 7+ 中,如何搜索所有文本字段? 的相关文章

随机推荐

  • 流量类型问号?

    对使用 感到困惑在流动中 据我所知 感谢参数之前或之后的流类型问号 https stackoverflow com questions 47314749 flow type question mark before or after par
  • 来自 StreamReader 的原始文件字节,幻数检测

    我试图区分 文本文件 和 二进制 文件 因为我实际上想忽略具有 不可读 内容的文件 我有一个文件 我认为它是 GZIP 存档 我试图通过检测幻数 文件签名来忽略此类文件 如果我在 Notepad 中使用十六进制编辑器插件打开文件 我可以看到
  • 无法使用“in”运算符在中搜索“_id”

    我正在尝试使用 mongoose 和express 来获取现有的用户文档 但我只得到这个 webroot api domain com production node modules mongoose lib document js 162
  • 删除 JavaScript 中的不间断空格

    我无法从字符串中删除空格 首先我要转换div to text 删除标签 有效 然后我尝试删除 nbsp 字符串的一部分 但它不起作用 知道我做错了什么 newStr myDiv text newStr newStr replace nbsp
  • 当我已经在Ubuntu上安装了nodejs 8时,还可以安装NVM吗?

    我已经安装了nodejs 8 我无法使用角度1运行karma测试 正如Karma官方网站上指定的那样Note Karma currently works on Node js 0 10 0 12 x 4 x 5 x 6 x and 7 x
  • 在准备好的语句中设置数组,抛出 java.sql.SQLFeatureNotSupportedException

    我有一个字符串列表 我想将其设置为准备好的语句中的参数 这里的问题和答案看起来很简单 如何使用数组列表作为准备好的语句参数 https stackoverflow com questions 17842211 how to use an a
  • Rails 3 session_store 域 :all 的作用是什么?

    更新了问题以使其更清楚 据我所知 您可以设置 session store 的域以在子域之间共享会话 如下所示 Rails application config session store cookie store key gt my key
  • Android 库项目依赖于其他库项目

    由于各种原因 我遇到的情况是 我在小型独立的 android 库项目中存在多个应用程序组件 这些组件正在编译为 aars 在某些情况下 这些会被推送到 Maven 存储库并以这种方式使用 这很好 一切都很好 在其他情况下 这些 aar 需要
  • ASP.NET MVC 4 中的全局变量

    我目前正在构建一个 ASP Net MVC 4 SAAS 应用程序 C 并且一直致力于设计计划 我的意思是如果客户选择Plan A他们应该有权访问一些东西 如果他们选择的话Plan B他们可以接触其他人等等 我坚持的部分是与所有操作共享帐户
  • Vuejs 2 将 prop 对象传递给子组件并检索

    我想知道如何使用 props 和检索将对象传递给子组件 我了解如何将其作为属性来执行 但是如何传递对象并从子组件中检索对象 当我从子组件中使用 this props 时 我收到未定义或错误消息 父组件
  • 更改 TextField Material-UI v1 的 onHover 颜色

    我无法通过覆盖类名来更改 TextField 的 onHover 颜色 我怎样才能做到这一点 我正在使用材质 UI v1 https github com callemall material ui tree v1 beta https g
  • 卡住。如何将这 3 个文本居中并间隔开? [复制]

    这个问题在这里已经有答案了 尝试向左 居中 向右移动 3 段文本 尝试使用 CSS 但我陷入困境 Thanks 您可以使用 flex 并将 justify content 设置为 space Between text container d
  • sails.js 嵌套模型

    在 sails js 0 10 中我尝试执行以下操作 user js module exports attributes uuid type string primaryKey true required true profile firs
  • 如何添加将 WC_Product_Variable 扩展到购物车的自定义 WooCommerce 产品类型

    我创建了一个基于内置变量产品类型的自定义 WooCommerce 产品类型 我希望拥有特定于我的产品类型的产品变体以及自定义特征和字段 这一切都在管理和我的自定义前端产品页面模板中正常工作和显示 这是我定制的产品 供参考 add actio
  • Java 轮询网络连接

    我正在用 Java 编写一个程序 在一个线程上打开 256 个网络连接 每当套接字上有任何数据时 我都应该读取它并处理它 目前 我正在使用以下方法 while true do iterate over all network connect
  • 如何测试 django 模板块的使用?

    我想做以下事情 if appnav hr div ul class tabs block appnav endblock ul div endif 但是 测试继承链中模板当前使用的块似乎不起作用 还有其他条件可以做到这一点吗 模板语言并不能
  • 使用 AppleScript 设置窗口位置

    我正在尝试使用 AppleScript 设置 Messages app 聊天窗口的位置 tell application System Events set position of window 1 of application Messa
  • 登录时出现quickblox错误,android

    我正在使用 Quickblox 在 Android 平台上进行聊天 并使用 facebook 身份验证 我这样做这些步骤 1 QBSettings getInstance fastConfigInit 2 QBAuth createSess
  • 如何使用 Typhoon 为集成测试注入假的、存根的或模拟的依赖项

    我正在尝试使用 KIF 编写集成测试 我的问题是 如何为特定视图控制器注入存根 模拟或虚假依赖项 每个使用数据模型 http 客户端 存储管理器等依赖项的视图控制器都来自 ModelAssembly ApplicationAssembly
  • 在 ElasticSearch 7+ 中,如何搜索所有文本字段?

    我想在 Elasticsearch 7 3 中存储的文档中搜索单词 我希望在以前版本的 Elasticsearch 上运行的一个示例是 query bool must match all oliver must not should fro