_source && _all

_source

(1)查询的时候,直接可以拿到完整的document,不需要先拿document id,再发送一次请求拿document

(2)partial update基于_source实现

(3)reindex时,直接基于_source实现,不需要从数据库(或者其他外部存储)查询数据再修改

(4)可以基于_source定制返回field

(5)debug query更容易,因为可以直接看到_source

如果不需要上述好处,可以禁用_source, 必须j

PUT /my_index/_mapping/my_type2
{
  "_source": {"enabled": false}
}

注意是创建mapping的时候同时进行设置

如下实例:

PUT /test_index3
{
    "mappings": {
        "my_type6": {
            "_source": {
                "enabled": false
            },
            "properties": {
                "author_id": {
                    "type": "long"
                },
                "title": {
                    "type": "text",
                    "analyzer": "english"
                },
                "content": {
                    "type": "text"
                },
                "post_date": {
                    "type": "date"
                },
                "publisher_id": {
                    "type": "text",
                    "index": "not_analyzed"
                }
            }
        }
    }
}

_all

将所有field打包在一起,作为一个_all field,建立索引。没指定任何field进行搜索时,就是使用_all field在搜索。

同上 也需要在设置mapping的同时加入此参数设置,否则已经设置过mapping会报错.

也可以在field级别设置include_in_all field,设置是否要将field的值包含在_all field中

Last updated

Was this helpful?