SpringCloud整合Elastic Search(二)

53 篇文章 0 订阅

1. SpringCloud完整配置Elastic Search

spring:
  data:
    elasticsearch:
      cluster-name: my-elasticsearch-cluster      # 集群名称
      cluster-nodes: localhost:9300                # 集群节点地址
      repositories:
        enabled: true                             # 开启 Elasticsearch Repository 支持
      properties:
        path:
          logs: /var/logs/elasticsearch           # 指定 Elasticsearch 日志路径
        http:
          enabled: true                            # 开启 HTTP 协议支持
          compression: true                        # 开启压缩传输
          max-initial-line-length: 2k              # 设置最大初始行长度
          max-header-size: 8k                      # 设置最大请求头大小

2. Elastic Search索引增删改查

下面是一个简单的示例,在Spring Boot中使用Spring Data Elasticsearch来执行基本的索引操作(增加、删除、修改和查询):

@Service
public class BookService {
    
    @Autowired
    private ElasticsearchTemplate esTemplate;
 
    @Autowired
    private BookRepository bookRepository;

    /**
     * 添加文档
     */
    public void add(Book book) {
        IndexQuery indexQuery = new IndexQueryBuilder().withId(book.getId()).withObject(book).build();
        esTemplate.index(indexQuery);
    }

    /**
     * 删除文档
     */
    public void delete(String id) {
        esTemplate.delete(Book.class, id);
    }

    /**
     * 更新文档
     */
    public void update(Book book) {
        IndexQuery indexQuery = new IndexQueryBuilder().withId(book.getId()).withObject(book).build();
        esTemplate.index(indexQuery);
    }

    /**
     * 查询文档
     */
    public List<Book> search(String query) {
        QueryBuilder queryBuilder = QueryBuilders.boolQuery()
                .should(QueryBuilders.matchQuery("title", query))
                .should(QueryBuilders.matchQuery("author", query));
        NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder()
                .withQuery(queryBuilder)
                .build();
        return esTemplate.queryForList(nativeSearchQuery, Book.class);
    }
}

@Repository
public interface BookRepository extends ElasticsearchRepository<Book, String> {}

使用Elasticsearch的场景包括但不限于搜索引擎、日志分析和实时分析等。

3.Elastic Search分词器

下面是一个简单的示例,在Spring Boot中使用Elasticsearch的分词器:

@Service
public class AnalyzerService {

    @Autowired
    private ElasticsearchOperations esTemplate;

    /**
     * 使用自定义分词器进行分词
     */
    public AnalyzeResponse analyze(String text) {
        AnalyzeRequest request = AnalyzeRequest.withIndexAnalyzer("my_index", "my_analyzer", text);
        return esTemplate.getClient().admin().indices().analyze(request).actionGet();
    }
}

在Elasticsearch中,分词器用于将文本分成单独的单词,这些单词可以用于搜索、聚合和排序等目的。使用自定义分词器可以更好地控制分词结果,从而提高搜索准确性。分词器的应用场景包括但不限于搜索引擎、文本分类和实时分析等。完整代码请参见Elasticsearch官方文档。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123的故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值