• 自定义_all字段

    自定义_all字段

    在元数据:_all字段中,我们解释了特殊的_all字段会将其它所有字段中的值作为一个大字符串进行索引。尽管将所有字段的值作为一个字段进行索引并不是非常灵活。如果有一个自定义的_all字段用来索引人名,另外一个自定义的_all字段用来索引地址就更好了。

    ES通过字段映射中的copy_to参数向我们提供了这一功能:

    1. PUT /my_index
    2. {
    3. "mappings": {
    4. "person": {
    5. "properties": {
    6. "first_name": {
    7. "type": "string",
    8. "copy_to": "full_name" <1>
    9. },
    10. "last_name": {
    11. "type": "string",
    12. "copy_to": "full_name" <1>
    13. },
    14. "full_name": {
    15. "type": "string"
    16. }
    17. }
    18. }
    19. }
    20. }

    // SENSE: 110_Multi_Field_Search/45_Custom_all.json

    <1> first_name和last_name字段中的值会被拷贝到full_name字段中。

    有了这个映射,我们可以通过first_name字段查询名字,last_name字段查询姓氏,或者full_name字段查询姓氏和名字。

    提示:first_name和last_name字段的映射和full_name字段的索引方式的无关。full_name字段会从其它两个字段中拷贝字符串的值,然后仅根据full_name字段自身的映射进行索引。