1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ymm-tech-ebatis

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Ebatis — что это

Ebatis – это декларативный фреймворк Elasticsearch ORM. Достаточно определить интерфейс, чтобы легко получить доступ к Elasticsearch. Ebatis элегантно помогает вам изолировать бизнес-логику от прямого вызова низкоуровневых интерфейсов доступа к Elasticsearch, и вам больше не нужно вручную создавать сложные DSL-операторы. Кроме того, когда вы обновляете версию Elasticsearch, бизнесу не нужно беспокоиться об изменениях в низкоуровневом интерфейсе, и обновление происходит плавно. В настоящее время поддерживаются версии Elasticsearch 6.5.1 и 7.5.1.

Текущее состояние ebatis

Ebatis уже стабильно работает в течение года на множестве бизнес-систем, обеспечивая около 1 миллиарда поисковых услуг в день.

Быстрый старт

Зависимости POM (в настоящее время также поддерживает 6.5.1.2.RELEASE):

<dependency>
     <groupId>io.manbang</groupId>
     <artifactId>ebatis-core</artifactId>
     <version>7.5.1.4.RELEASE</version>
</dependency>

Создание кластера подключения:

@AutoService(ClusterRouterProvider.class)
public class SampleClusterRouterProvider implements ClusterRouterProvider {
    public static final String SAMPLE_CLUSTER_NAME = "sampleCluster";
 
    @Override
    public ClusterRouter getClusterRouter(String name) {
        if (SAMPLE_CLUSTER_NAME.equalsIgnoreCase(name)) {
            Cluster cluster = Cluster.simple("127.0.0.1", 9200, Credentials.basic("admin", "123456"));
            return ClusterRouter.single(cluster);
        } else {
            return null;
        }
    }
}

Определение POJO-объекта:

@Data
public class RecentOrder {
    private Long cargoId;
    private String driverUserName;
    private String loadAddress;
    private Boolean searchable;
    private Integer companyId;
}

@Data
public class RecentOrderCondition {
    private Boolean searchable;

    private String driverUserName;
}

Определение интерфейса Mapper:

@Mapper(indices = "recent_order_index")
public interface RecentOrderRepository {
    @Search
    List<RecentOrder> search(RecentOrderCondition condition);
}

Тестирование интерфейса:

@Slf4j
public class OrderRepositoryTest {
 
    @Test
    public void search() {
        // 组装查询条件
        RecentOrderCondition condition = new RecentOrderCondition();
        condition.setSearchable(Boolean.TRUE);
        condition.setDriverUserName("张三");
 
        // 映射接口
        RecentOrderRepository repository = MapperProxyFactory.getMapperProxy(RecentOrderRepository.class, SampleClusterRouterProvider.SAMPLE_CLUSTER_NAME);
 
        // 搜索货源
        List<RecentOrder> orders = repository.search(condition);
 
        // 断言
        Assert.assertEquals(3, orders.size());
 
        // 打印输出
        orders.forEach(order -> log.info("{}", order));
    }
}

Поисковый DSL-оператор:

{
  "query" : {
    "bool" : {
      "must" : [ {
        "term" : {
          "searchable" : {
            "value" : true,
            "boost" : 1.0
          }
        }
      }, {
        "term" : {
          "driverUserName" : {
            "value" : "张三",
            "boost" : 1.0
          }
        }
      } ],
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  },
  "_source" : {
    "includes" : [ "cargoId", "driverUserName", "loadAddress", "searchable", "companyId" ],
    "excludes" : [ ]
  }
}

Версия ebatis использует обозначение xx.xx.xx.xx.RELEASE, где первые три цифры представляют собой версию драйвера Elasticsearch, а последняя цифра представляет собой итерацию ebatis на этой версии. Например, 7.5.1.3.RELEASE означает третью итерацию ebatis на версии Elasticsearch 7.5.1.

Начало работы с ebatis и связанные статьи

Руководство по использованию: https://github.com/ymm-tech/ebatis/wiki Связанные статьи: https://www.infoq.cn/article/u4Xhw5Q3jfLE1brGhtbR Связанные статьи: https://mp.weixin.qq.com/s/GFRiiQEk-JLpPnCi_WrRqw

Группа общения

DingTalk

Поддержите нас

Вы можете поддержать нас: кофе: приходите выпить чашку кофе: кофе:

Или поставьте звезду

Открытым проектам нужна постоянная поддержка, и, конечно, наша поддержка также исходит от вашей поддержки. Надеемся, что вы: point_right: пришли сюда, добавьте ещё и подписку point_left:

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ymm-tech-ebatis.git
git@api.gitlife.ru:oschina-mirror/ymm-tech-ebatis.git
oschina-mirror
ymm-tech-ebatis
ymm-tech-ebatis
master