资讯专栏INFORMATION COLUMN

elasticsearch初探

yanbingyun1990 / 1268人阅读

摘要:初次使用,介绍一下简单的入门,不涉及任何高端技巧,熟悉的朋友不用看了,浪费时间。最后说一下的插件用法,比如常见的功能,安装,,这是低版本的装法,新版参考文档

Elasticsearch:一个集群性质的Lucene搜索引擎

因为项目需要实现按关键字匹配排序功能,本来想用Lucence的,但是L本身只是一个基础library,实际应用的话目测代码量比较大,小公司实现比较吃力,所以使用了elasticsearch,可以集群便于扩展。初次使用,介绍一下简单的入门,不涉及任何高端技巧,熟悉的朋友不用看了,浪费时间。

项目一直使用的spring-boot-starter,顺便找了一下,果然找到有社区贡献的集成jar,很厚脸皮的直接拿过来用了,项目地址:https://github.com/spring-projects/spring-data-elasticsearch,注意:这里的client版本支持的是1.5.2,官方最新版本已经到2.1了,社区版本目前支持较低,反正我是初学,先学会使用。

开始动手:

添加依赖



    org.springframework.data
    spring-data-elasticsearch
    1.3.0.RELEASE
# gradle
dependencies {
    compile "org.springframework.boot:spring-boot-starter-data-elasticsearch"
}

配置








    


注意local="true",表示client启动在本地,经试验,没有什么实际用途,内存占用严重,里面在集成店别的东西,很容易内存溢出,仅作演示用。Transport Client配置(其实就是连接远程服务):









    

#java config:
#application.properties:

esearch.host=192.168.199.150
esearch.port=9300
@Configuration
@EnableElasticsearchRepositories(basePackages = "org/aybx/wishes/user/elastic")
public class ElasticSearchConfig {

    @Value("${esearch.port}") int port;
    @Value("${esearch.host}") String hostname;

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchTemplate(client());
    }

    @Bean
    public Client client(){
        TransportClient client= new TransportClient();
        TransportAddress address = new InetSocketTransportAddress(hostname, port);
        client.addTransportAddress(address);
        return client;
    }
}

basePackages包含继承spring-dataRepositories

我的包结构如下:

ESUser类需要注解@Document(indexName = "user"),指定id,ES的目录结构大概是/index/type/documentIdESUserRepository需要继承ElasticsearchCrudRepository,Service是正常的业务代码,测试代码:

@RunWith(value = SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = BootStartup.class)
@WebAppConfiguration
@ActiveProfiles("scratch")
public class ESUserServiceTest {

    private static final Logger LOGGER = LoggerFactory.getLogger(ESUserServiceTest.class);

    @Autowired
    IESUserService iesUserService;

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;

    @Test
    public void testSave() throws Exception {
        ESUser user = new ESUser();
        user.setId(1L);
        user.setContent("接机,包房,做饭");

        user = iesUserService.save(user);

        LOGGER.info("user, {}", JSON.toJSONString(user));

        ESUser user1 = new ESUser();
        user1.setId(2L);
        user1.setContent("接机,包房");

        user1 = iesUserService.save(user1);

        LOGGER.info("user1, {}", JSON.toJSONString(user1));

        ESUser user2 = new ESUser();
        user2.setId(3L);
        user2.setContent("包房,做饭");

        user2 = iesUserService.save(user2);

        LOGGER.info("user2, {}", JSON.toJSONString(user2));
    }

    @Test
    public void testFind() throws Exception {
        SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(queryStringQuery("接机 OR 做饭")).withFields("content").build();
        List esUsers = elasticsearchTemplate.queryForList(searchQuery, ESUser.class);
        for (ESUser user : esUsers) {
            LOGGER.info("user:{}, content:{}", user.getId(), user.getContent());
        }
    }
}

这里没有用service调用,写了一个简单的查询,接机做饭中间的OR表示匹配或的意思,还有很多可以操作的地方,详细可以参考官方文档,比如增加一个条件的权重,筛选多余的filed,筛选子类的属性等等;感觉复杂到不行,不过也对,搜索的时候必然会有这样的需要,也很符合实际情况。

最后说一下ES的插件用法,比如常见的monitor功能:Marvel,安装,/bin/plugin install elasticsearch/marvel/latest,这是低版本的装法,新版参考文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65423.html

相关文章

  • elasticsearch初探

    摘要:摘要是一个基于的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于接口。是用开发的,并作为许可条款下的开放源码发布,是当前流行的企业级搜索引擎。主分片和备份分片上下对应索引的种类结构型索引非结构型索引判断标准 摘要 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearc...

    LucasTwilight 评论0 收藏0
  • 利用ELK搭建Docker容器化应用日志中心

    摘要:概述应用一旦容器化以后,需要考虑的就是如何采集位于容器中的应用程序的打印日志供运维分析。 showImg(https://segmentfault.com/img/remote/1460000014146680); 概述 应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析。典型的比如 SpringBoot应用的日志 收集。本文即将阐述如何利...

    周国辉 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<