elasticsearch 有没有办法在现有数据上启用_source?,elasticsearch,indexing,elasticsearch,Indexing" /> elasticsearch 有没有办法在现有数据上启用_source?,elasticsearch,indexing,elasticsearch,Indexing" />

elasticsearch 有没有办法在现有数据上启用_source?

elasticsearch 有没有办法在现有数据上启用_source?,elasticsearch,indexing,elasticsearch,Indexing,我创建了一个没有源字段的索引(考虑内存)。 我想在现有数据上启用此字段,有没有办法 例如: 我将创建虚拟索引: PUT /dummy-index?pretty { "mappings": { "_doc": { "_source": { "enabled": false } } } } 我将添加下一个文档: PUT /dummy-index/_doc/

我创建了一个没有源字段的索引(考虑内存)。 我想在现有数据上启用此字段,有没有办法

例如:
我将创建虚拟索引:

PUT /dummy-index?pretty
{
  "mappings": {
    "_doc": {
      "_source": {
        "enabled": false
      }
    }
  }
}
我将添加下一个文档:

PUT /dummy-index/_doc/1?pretty
{
  "name": "CoderIl"
}

在搜索时,我将只获取命中元数据,而不搜索名称字段
{
   "_index" : "dummy-index",
   "_type" : "_doc",
   "_id" : "1",
   "_score" : 1.0
}
问题是我是否可以将
\u soruce
更改为启用,当我再次搜索时,我将获得缺少的数据(在本例中为“name”字段)-

在同一官方文件中的字段控件上

默认情况下,字段值被索引以使其可搜索,但是 未存储。这意味着可以查询字段,但 无法检索原始字段值

通常这并不重要。该字段值已经是 _默认情况下存储的源字段。如果只想检索单个字段或几个字段的值,而不是 整个源,那么这可以通过源过滤实现

如文档中所述,默认情况下它是禁用的,如果您想节省空间,您可以在特定字段上启用它,并且需要重新索引数据

编辑:控制(默认情况下启用)字段是否索引(这是搜索字段所必需的),并且
存储
选项控制字段是否存储,如果您希望获取未分析的值,即在索引请求中发送给ES的值,根据字段类型和
索引选项的一部分,请参阅SO问题以了解更多信息。

关于来自同一正式文档的字段控件

默认情况下,字段值被索引以使其可搜索,但是 未存储。这意味着可以查询字段,但 无法检索原始字段值

通常这并不重要。该字段值已经是 _默认情况下存储的源字段。如果只想检索单个字段或几个字段的值,而不是 整个源,那么这可以通过源过滤实现

如文档中所述,默认情况下它是禁用的,如果您想节省空间,您可以在特定字段上启用它,并且需要重新索引数据


编辑:控制(默认情况下启用)字段是否索引(这是搜索字段所必需的),并且
存储
选项控制字段是否存储,如果您希望获取未分析的值,即在索引请求中发送给ES的值,根据字段类型和
索引选项的一部分,请参阅SO问题以了解更多信息。

如聊天中所述,问题是

  • \u源
    字段已禁用
  • 在搜索结果中,他想要的是存储在字段中的内容,如果像下面这样启用,则返回作为部分if
    \u source
  • 现在为了实现这一点,必须在字段上启用
    存储
    选项,请注意这不能动态更改,您必须使用更新的映射重新索引数据

    示例

    索引映射

    {
        "mappings": {
            "_source": {
                "enabled": false
            },
            "properties": {
                "name": {
                    "type": "text"
                },
                "title" :{
                    "type" : "text",
                    "store" : true
                }
            }
        }
    }
    
    索引样本文档

    {
       "name" : "coderIL"
    }
    
    {
       "name" : "coderIL",
       "title" : "seconds docs"
    }
    
    **使用内容搜索包含字段的文档

    和搜索结果

     "hits": [
                {
                    "_index": "without_source",
                    "_type": "_doc",
                    "_id": "1",
                    "_score": 0.18232156
                },
                {
                    "_index": "without_source",
                    "_type": "_doc",
                    "_id": "2",
                    "_score": 0.18232156,
                    "fields": {
                        "title": [
                            "seconds docs"
                        ]
                    }
                }
            ]
    

    正如聊天中所阐明的,问题是

  • \u源
    字段已禁用
  • 在搜索结果中,他想要的是存储在字段中的内容,如果像下面这样启用,则返回作为部分if
    \u source
  • 现在为了实现这一点,必须在字段上启用
    存储
    选项,请注意这不能动态更改,您必须使用更新的映射重新索引数据

    示例

    索引映射

    {
        "mappings": {
            "_source": {
                "enabled": false
            },
            "properties": {
                "name": {
                    "type": "text"
                },
                "title" :{
                    "type" : "text",
                    "store" : true
                }
            }
        }
    }
    
    索引样本文档

    {
       "name" : "coderIL"
    }
    
    {
       "name" : "coderIL",
       "title" : "seconds docs"
    }
    
    **使用内容搜索包含字段的文档

    和搜索结果

     "hits": [
                {
                    "_index": "without_source",
                    "_type": "_doc",
                    "_id": "1",
                    "_score": 0.18232156
                },
                {
                    "_index": "without_source",
                    "_type": "_doc",
                    "_id": "2",
                    "_score": 0.18232156,
                    "fields": {
                        "title": [
                            "seconds docs"
                        ]
                    }
                }
            ]
    

    谢谢你的回答。我没有启用它,我有没有源字段的索引数据,现在我想要这些数据(我不确定在哪里,但它保存在ES中,因为我可以对这些数据进行操作并获得正确的awnser)@CoderIL,我想你会对
    \u source
    感到困惑,这是一个索引级别设置(默认启用)至
    source
    param,该参数是字段特定的设置(默认情况下禁用)。如果未明确禁用源代码,则从中获取数据。但为了确认这一点,我需要查看您的索引映射、示例数据和搜索查询。从我的映射中,我显式地禁用它(\u source)“`u source\”:\{\'enabled\”:false}`@CoderIL,这样您就可以显示您的查询以及您在进行的所有简单搜索操作了吗?请注意,默认情况下,字段已编入索引,有关详细信息,请参阅info@CoderIL在我的答案中添加了编辑部分,这将帮助您更好地理解这些概念。谢谢您的回答。我没有启用它,我有没有源字段的索引数据,现在我想要这些数据(我不确定在哪里,但它保存在ES中,因为我可以对这些数据进行操作并获得正确的awnser)@CoderIL,我想你会对
    \u source
    感到困惑,这是一个索引级别设置(默认启用)至
    source
    param,该参数是字段特定的设置(默认情况下禁用)。如果未明确禁用源代码,则从中获取数据。但为了确认这一点,我需要查看您的索引映射、示例数据和搜索查询。从我的映射中,我显式地禁用它(\u source)“`u source\”:\{\'enabled\”:false}`@CoderIL,这样您就可以显示您的查询以及您在进行的所有简单搜索操作了吗?请注意,默认情况下,字段已编入索引,有关详细信息,请参阅info@CoderIL在我的答案中添加了编辑部分,这将帮助您理解