在Spring java框架中使用ElasticSearch的最佳方法

 我是被催族 发布于 2023-02-06 14:53

我正在开发一个计划将elasticsearch用作数据存储库的系统.我正在尝试选择开发我的应用程序的最佳方法,该应用程序可以索引和查询elasticsearch中的数据.我拥有的系统建立在Spring框架之上.

使用Spring-data-elasticsearch(https://github.com/spring-projects/spring-data-elasticsearch)是一个不错的选择吗?

或者使用elasticsearch核心库本身是一个不错的选择?

我需要处理嵌套数据(内部对象),但Spring-data-elasticsearch最近似乎没有操作.

我希望我能找到问题的解决方案.提前致谢.

1 个回答
  • Spring数据elasticsearch支持弹性搜索的大多数常见功能集,包括嵌套,内部对象和父子(最近).

    当你说要使用嵌套数据(内部对象)时,请清楚,因为elasticsearch有两个概念:内部对象和嵌套对象.

    在弹性搜索中管理关系可以找到详细的解释

    嵌套文档示例

    人员实体:

    @Document(indexName = "person" , type = "user")
    
    public class Person {
    
        @Id
        private String id;
    
        private String name;
    
        @Field( type = FieldType.Nested)
        private List<Car> car;
    
        // setters-getters
    }
    

    汽车实体:

    public class Car {
        private String name;
        private String model;
        //setters and getters 
    }
    

    设置数据:

    Person foo = new Person();
    foo.setName("Foo");
    foo.setId("1");
    
    List<Car> cars = new ArrayList<Car>();
    Car subaru = new Car();
    subaru.setName("Subaru");
    subaru.setModel("Imprezza");
    cars.add(subaru);
    foo.setCar(cars);
    

    索引:

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setId(foo.getId());
    indexQuery.setObject(foo);
    
    //creating mapping
    elasticsearchTemplate.putMapping(Person.class);
    //indexing document
    elasticsearchTemplate.index(indexQuery);
    //refresh
    elasticsearchTemplate.refresh(Person.class, true);
    

    搜索:

    QueryBuilder builder = nestedQuery("car", boolQuery()
        .must(termQuery("car.name", "subaru"))
        .must(termQuery("car.model", "imprezza")));
    
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
    List<Person> persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
    

    您可以在嵌套对象测试中找到有关嵌套和内部对象的更多测试用例

    2023-02-06 14:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有