elasticsearch初体验,踩坑

2020-03-26  本文已影响0人  输入昵称就行

背景

在开发一个新的需求的过程中,涉及到有些查询量大,频次高,搜索条件复杂,所以会将数据存到elasticsearch中,一方面可以提高性能,另外减小数据库的压力。

业务逻辑

在创建一个业务单据的时候,会同时在数据库和es集群中插入数据,数据接口基本一致,业务操作不外乎增删改查,索引按月分,工程-表-yyyyMM的方式命名,索引新增记录的时候自动创建。

踩坑过程

SearchResponse searchResponse = requestBuilder.get();
{
  "from" : 0,
  "size" : 10,
  "post_filter" : {
    "range" : {
      "createTime" : {
        "from" : "2020-03-01 00:00:00",
        "to" : "2020-03-30 23:59:59",
        "include_lower" : true,
        "include_upper" : true
      }
    }
  },
  "sort" : [ {
    "createTime" : {
      "order" : "desc"
    }
  } ]
}
"mappings": {
    "test-type": {
      "properties": {
        "createTime": {
          "type": "string"
        }
}

结论

  1. 首先使用es前基本的操作要熟悉,比如查询语句怎么写,会查文档。
  2. 存储新的数据到es,要提前创建mappings,设置好每个字段分词策略
  3. 创建index template的时候 template的命名最好不要太大的匹配,如果有人以公司名开头的xx-* ,那后来的人就很麻烦了,所有的索引都会匹配上这个规则,所以 最好是 [工程名-业务-表-*]的方式,这样每个template就不会被有冲突了。
    image.png
  4. 这次的坑其实不应该踩的,问了几个同事竟然都不知道有这个mappings,说明公司在这方面没没有好好的沉淀,文档上面都只有一个后台地址,并没有告诉具体要做什么,所以我新加了一个文档说明,给后来的同事参考。
上一篇 下一篇

猜你喜欢

热点阅读