当前位置: 首页 > 知识库问答 >
问题:

如何在Elastic中使用脚本中的特殊文档字段?

邵繁
2023-03-14

我试图在ElasticSearch中用自定义脚本编写查询:

>

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-filter.html#query-dsl-script-filter

    https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting.html。

    一切都很好,直到我决定使用特殊的文档字段(例如:_id、_uid等)。该查询总是返回空结果,并且如果我像这样使用它:doc['_id'].value不会出现错误。

    那么如何在自定义脚本中使用文档的“_id”字段呢?

  • 共有1个答案

    施弘壮
    2023-03-14

    _iduid字段中索引,使用以下格式:type#id

    因此,您的脚本应该如下所示(对于名为my_type,ID为1)的类型:

    {
      "query": {
        "filtered": {
          "filter": {
            "script" : {
                "script" : "doc['_uid'].value == 'my_type#1'"
            }
          }
        }
      }
    }
    

    一个更复杂的解决方案是取出IDES-way如下所示:

    {
      "query": {
        "filtered": {
          "filter": {
            "script": {
              "script": "org.elasticsearch.index.mapper.Uid.splitUidIntoTypeAndId(new org.apache.lucene.util.BytesRef(doc['_uid'].value))[1].utf8ToString() == '1'"
            }
          }
        }
      }
    }
    

    其中org.elasticsearch.index.mapper.uid.splituidIntotyPeandid(new org.apache.lucene.util.bytesref(doc['_uid'].value))[1]IDorg.elasticsearch.index.mapper.uid.splituidIntotyPeandid(new org.apache.lucene.value))[0]类型

     类似资料:
    • 我完全不知道如何更好地处理这个过程。 下面的宏分析文档中的每个字符,如果ASCII值高于255,它会对其应用特殊的字符样式——有些是针对特定语言的,如果不是这些语言的一部分,则只使用“lang”。 宏工作正常,但是在长文档上,处理它需要很长时间。例如,我刚刚处理了一个147页(单行间距)的文档,每页上有几行希腊文,用了40分钟,在Windows的Word 2016中(相比之下,在Mac上完全相同的

    • 问题内容: 我的应用程序正在使用这样的NSURL: 当我试图做一个从这个NSURL获取数据的任务时,如下所示: 但是尝试从该地址获取数据时出现错误,尽管当我使用野生动物园去链接时:“ http://www.geonames.org/search.html?q =Aïn+Béïda+ Algeria&country =“我可以看到数据。我该如何解决? 问题答案: 迅捷2 编码的URL现在是: “ h

    • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有三种: 可以使用选择上下文菜单来查看和插入适用于所选字符的字形。 可以使用“字形”面板来

    • 问题内容: 如何在Java / Eclipse中使用/显示♥,♦,♣或like等字符? 当我尝试直接使用它们时,例如在源代码中,Eclipse无法保存文件。 我能做什么? 编辑:如何找到Unicode转义序列? 问题答案: 问题在于,您使用的字符无法在文件设置为(Cp1252)的编码中表示。从我的角度来看,您基本上有两个选择: 选项1. 更改编码。 根据IBM的介绍,您应该将编码设置为UTF-8。

    • 问题内容: 我可以使用setText(“åäö”),但是如果我没有在键盘上键入内容,这也不起作用 奇怪的是,它在Mac上不起作用,但在Windows上却起作用,有人对此有答案吗?谢谢! 这是另一个主题相似的问题! 如何从Libgdx中的特殊字符获取输入? 我试图获得ascii值并将其通过 但这不起作用。我将项目编码设置为UTF-8,并且可以打印åäö等特殊字符。 编辑:我尝试了 没有打印åäö 问

    • 我需要根据模板生成几个word文档。在每个文档中,都需要替换某些字符串(所有字符串都包含在一组双大括号中,以便轻松区分)。 我试过: **阅读整个模板,并使用正则表达式替换单词的所有出现。替换 **还可以访问每个Text元素 但上述解决方案都不管用,因为在中国。docx文件所有这些花括号都存储在不同的文本元素中(