ElasticSearch笔记(二)

120 阅读3分钟

一、ES实战

1.创建索引

创建索引时字段的映射是一个需要关注的问题!分为如下几种情况:

  1. 字段不会作为查询条件,但是需要返回给用户。建议将index设为false;
  2. 文档的字段值不能被分词,且搜索语句查询时使用的是term查询。建议字符串类型的字段设置为keyword;
  3. 文档的字段值会被分词,且搜索语句同样被分词,查询时使用match方式查询。建议字符串类型设置为text;
  4. text类型的文档分词器通常设置为ik_max_word,查询分词器设置为ik_smart。这样做一定程度上减少了相关性较低的文档返回数量。比如:当我的词库和查询语句同时包含网络和数据中心这个词时,返回结果不会返回文档中仅有网络、和、数据、中心等部分词汇的文档。但是会出现查不全的问题:当我搜索文学院的男生时无法匹配到字段值为的文档,因为搜索语句的分词结果是文学院、的、男生
PUT personal_info
{
  "mappings": {
    "properties": {
      "del_flag": {
        "type": "keyword"
      },
      "entityId": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }

      },
      "name": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "type": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "专业": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "单位代码": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "单位名称": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "导师编号": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "年级": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "性别": {
        "analyzer": "standard",
        "search_analyzer": "standard",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "政治面貌": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "更新时间": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "民族": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "班级": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "电子邮箱": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "index": false
      },
      "电话": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "index": false
      },
      "职称": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "邮箱": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "index": false
      },
      "院系": {
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

2.添加文档

POST personal_info/_doc
{
  "entityId":"202133697",
  "name":"董方红s",
  "type": "研究生",
  "院系": "文学院",
  "专业": "电子信息",
  "年级": "2021",
  "性别": "男",
  "政治面貌": "共青团员",
  "民族": "汉族",
  "电话": "18340087501",
  "邮箱": "173400844@qq.com",
  "更新时间": "2022-09-18 11:20:44.0"
}

POST personal_info/_doc
{
  "entityId": "202133690",
  "name": "雷洁萍",
  "type": "研究生",
  "院系": "文学院",
  "专业": "电子信息",
  "年级": "2021",
  "性别": "女",
  "政治面貌": "中共党员",
  "民族": "汉族",
  "电话": "17340087533",
  "邮箱": "173400844@qq.com",
  "更新时间": "2022-09-18 11:20:44.0"
}

POST personal_info/_doc
{
  "entityId":"202133691",
  "name":"张浩伟",
  "type": "研究生",
  "院系": "信息科学与技术学院",
  "专业": "电子信息",
  "年级": "2021",
  "性别": "男",
  "政治面貌": "共青团员",
  "民族": "蒙古族",
  "电话": "17340087536",
  "邮箱": "173400845@qq.com",
  "更新时间": "2022-09-18 11:20:44.0"
}



POST personal_info/_doc
{
  "entityId": "202133692",
  "name": "张荣博",
  "type": "研究生",
  "院系": "信息科学与技术学院",
  "专业": "电子信息",
  "年级": "2021",
  "性别": "男",
  "政治面貌": "中共党员",
  "民族": "汉族",
  "电话": "17340087533",
  "邮箱": "173400844@qq.com",
  "更新时间": "2022-09-18 11:20:44.0"
}