gpt4 book ai didi

elasticsearch - 如何在弹性脚本中使用特殊文档字段?

转载 作者:行者123 更新时间:2023-12-02 22:46:57 25 4
gpt4 key购买 nike

我正在尝试在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”字段呢?

    最佳答案

    使用以下格式在_id字段中为uid编制索引:type#id

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

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

    提取 id ES-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.util.BytesRef(doc['_uid'].value))[0]type

    关于elasticsearch - 如何在弹性脚本中使用特殊文档字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30706794/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com