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

是否可以在Elasticsearch中获取copy_to字段的内容?

寿意远
2023-03-14
问题内容

我正在使用Elasticsearch v2.3.0。假设我有一个映射索引:

{
"mappings": {
  "post": {
    "dynamic": false,
    "_source": {
      "enabled": true
    },
    "properties": {
      "text": {
        "norms": {
          "enabled": false
        },
        "fielddata": {
          "format": "disabled"
        },
        "analyzer": "text_analyzer",
        "type": "string"
      },
      "subfield": {
        "properties": {
          "subsubfield": {
            "properties": {
              "subtext": {
                "index": "no",
                "analyzer": "text_analyzer",
                "type": "string",
                "copy_to": "text"
              }
            }  
          }
        }
      }
    },
    "_all": {
      "enabled": false
    }
  }
}

所以,从文本subfield.subsubfield.subtext复制到文本fieldcopy_to。如果你查询信息,然后从纯数据text显示在text现场,因为_source不被修改。如果要获取所有文本,则应汇总客户端上的所有字段。如果有许多子字段,这可能会带来不便。

是否有一个魔术查询,该查询允许获取text复制了所有文本的字段?


问题答案:

text字段集的映射中,"store":"yes"
您应该能够使用字段来获取它

范例

put test/test/_mapping
{
  "properties" : {
   "name" : { "type" : "string","copy_to": "text"},
   "text" : {"type" : "string" ,"store" :"yes"},
    "subfield": {
        "properties": {
          "subsubfield": {
            "properties": {
              "subtext": {
                "index": "no",
                "type": "string",
                "copy_to": "text"
              }
            }  
          }
        }
      }
  }

}

put test/test/1 
{
    "name" : "hello",
    "subfield" : {
        "subsubfield" : [
            {"subtext" : "soundgarden" },
            {"subtext" : "alice in chains" },
            {"subtext" : "dio" }
        ]
    }
}

post test/_search
{
    "fields": [
       "text"
    ]
}

结果

{
   "took": 2,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "test",
            "_type": "test",
            "_id": "1",
            "_score": 1,
            "fields": {
               "text": [
                  "hello",
                  "soundgarden",
                  "alice in chains",
                  "dio"
               ]
            }
         }
      ]
   }
}


 类似资料:
  • 我需要按9个文件分组,并在ElasticSearch中获得每个组的计数,原始代码使用“脚本”,性能很差,所以我需要优化它。我设法创建了一个新的字段并使用“copy_to”,但是当我与新的字段聚合时,我发现了一些问题。 我使用“src ip”和“dst ip”字段作为测试,copy_to字段是“agg condition”。下面是映射: 然后我给它添加一些数据 然后我看到kibana中的映射,它看起

  • 问题内容: 我有一个包含两个字符串字段的索引映射,并且都被声明为copy_to到另一个名为的字段。 索引为“ not_analyzed”。 当我在上创建存储桶聚合时,我期望field1和field2的键连接在一起的不同存储桶。取而代之的是,我得到了带有未连接的field1和field2键的单独存储桶。 示例:映射: 数据在: 和 聚合: 结果: 我期待只有2桶,和 我究竟做错了什么? 问题答案:

  • 问题内容: 我想获取所有Pythons关键字作为字符串的列表。如果我可以为内置函数做类似的事情,那也将很漂亮。 像这样的东西: 问题答案: 您询问了有关 语句的信息 ,同时在输出示例中显示了 关键字 。 如果您在寻找 关键字 ,它们都列在模块中: 从文档: 包含为解释程序定义的所有关键字的序列。如果将任何关键字定义为仅在特定语句生效时才处于活动状态,则这些关键字也将包括在内。

  • 我正在尝试将GZipStream与MemoryStream一起使用。我写入所需的所有字节,然后关闭gzip流,这样之后我需要从内存流中获取压缩的缓冲区,而无需分配额外内存(方法ToArray返回所需的字节数组,但它创建新的字节数组,然后将缓冲区中的所有字节复制到新数组)。据我所知,我只能使用GetBuffer()返回整个缓冲区,所以在这种情况下,我还有另一个问题:缓冲区末尾的所有零字节是否都不属于

  • 我正在尝试使用一个字段,只是为了复制的目的,而不是用下面的映射来索引它自己 但正在获取异常

  • 问题内容: 我只想获取嵌套字段,但不能,因为它不是叶字段。 我在下面尝试过,但是无法匹配嵌套对象中的每个ID和名称。 结果: 这是我的预期结果: 问题答案: 如果您没有某个查询应以某种方式匹配嵌套字段,则可以这样进行: 如果您还有一个查询,并且想返回 匹配 的 嵌套文档,则 可以这样操作(使用):