`

elasticsearch

 
阅读更多

elasticsearch初体验

springboot集成elasticsearch

// spring-boot-starter2.2.2.RELEASE 
// spring-data-elasticsearch3.2.3.RELEASE
// elasticsearch6.8.5
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>

 

application.yml配置文件

spring:
  elasticsearch:
    rest:
      uris: http://127.0.0.1:9200
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    serialization:
      write_dates_as_timestamps: false

 

 定义实体类Document

 

@Data
@Accessors(chain = true)
@Document(indexName = "my", type = "_doc")
public class MyDocument implements Serializable {
    /**
     * 唯一id
     */
    @Id
    protected String id;
    /**
     * 请求时间 yyyy-MM-dd HH:mm:ss
     * 毫秒数
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    protected Date requestTime;
}

 定义Repository

public interface MyRepository extends ElasticsearchRepository<MyDocument, String> {

}

 

测试类

public classMyTest extends BaseSpringCase {
    @Autowired
    private MyRepository myRepository;


    @Test
    public void insert() {
        MyDocument s = new MyDocument();
        s.setId("1");
        s.setRequestTime(new Date());
        MyDocument save = myRepository.save(s);
    }

    @Test
    public void search() throws ParseException {
        RangeQueryBuilder queryBuilder = QueryBuilders.rangeQuery("requestTime").from(1594029333420L).to(1594029333430L);
        Iterable<MyDocument> search = myRepository.search(queryBuilder);

    }

    
}

 

 

elasticsearch 对时间处理

{
    "my": {
        "mappings": {
            "_doc": {
                "properties": {
                    
                    "id": {
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "type": "keyword",
                                "ignore_above": 256
                            }
                        }
                    },
                    
                    "requestTime": {
                        "type": "long"
                    }
                    
                }
            }
        }
    }
}

 

elasticsearch会将时间保存为long类型的时间戳,这个就可以支持时间范围的查询了

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics