IYohoIndexService.java 2.51 KB
package com.yoho.search.consumer.common;

import java.util.List;

import com.yoho.search.core.es.IElasticsearchClient;
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse.AnalyzeToken;
import org.elasticsearch.action.bulk.BulkResponse;

import com.yoho.search.core.es.model.ESBluk;
import com.yoho.search.core.es.model.SearchParam;
import com.yoho.search.core.es.model.SearchResult;

/**
 * 索引管理接口: 管理所有的索引和索引客户端,以及对外提供索引操作接口
 */
public interface IYohoIndexService {

    /**
     * 获取集群客户端
     *
     * @return
     */
    IElasticsearchClient getElasticsearchClient(String indexName);

    /**
     * 检查某索引的健康状态
     *
     * @param indexName
     * @return
     */
    boolean checkHealth(String indexName);

    /**
     * 通过索引名获取索引信息
     *
     * @param yohoIndexName 索引名称
     * @return
     */
    IYohoIndex getIndex(String yohoIndexName);


    /**
     * 执行索引重建
     *
     * @param yohoIndexName
     */
    void rebuild(final String yohoIndexName);

    /**
     * 添加索引数据
     *
     * @param yohoIndexName 索引名称
     * @param data          索引数据
     */
    void addIndexData(String yohoIndexName, String id, Object data) throws Exception;

    /**
     * 删除索引数据
     *
     * @param yohoIndexName
     */
    void deleteIndexData(String yohoIndexName, String id) throws Exception;

    /**
     * 更新索引数据
     *
     * @param yohoIndexName
     */
    void updateIndexData(final String yohoIndexName, final String id, final Object data) throws Exception;

    /**
     * 执行搜索
     *
     * @param yohoIndexName
     * @param searchParam
     * @return
     */
    SearchResult search(final String yohoIndexName, SearchParam searchParam);

    /**
     * 执行搜索
     *
     * @param yohoIndexName
     * @param searchParams
     * @return
     */
    List<SearchResult> multiSearch(final String yohoIndexName, List<SearchParam> searchParams);

    /**
     * 获取分词结果
     *
     * @param yohoIndexName
     * @param text
     * @return MultiGetResponse
     */
    List<AnalyzeToken> getAnalyzeTokens(final String yohoIndexName, String text, String analyzer);

    /**
     * 批量删除或者更新插入索引
     *
     * @param esBluks
     * @return
     */
    BulkResponse bulk(List<ESBluk> esBluks);

}