ElasticSearch分布式搜索引擎,和插件elasticsearch-head

1.安装ElasticSearch

  1. 进行相关的启动到bin目录下面双击elasticSerach.bat
  2. cmd进行启动 好的到bin目录然后输入elasticSearch.bat,就可以启动了
  3. 可以启动它的一个前端显示插件ElasticSearch-head
  4. 可以使用PostMan进行ElasticSearch的相关的增删改查操作
    安装Node.js
  node -v   

可以查看Node的版本号

npm -v  

2.使用ik分词器进行相关的搜索功能

  1. 需要下载相关的插件
  2. ik_smart
  3. ik_max_word(一般可以使用这个进行细分)

3.使用EleasticSearch进行相应的开发:

3.1.加入相关的依赖

3.2.配置相关的applicaton.yml文件

3.3.创建相关的实体类

3.4.创建dao层接口

3.5.创建相关的service层

3.6创建相关的controller层

<dependency>
            <groupId>com.tensquare</groupId>
            <artifactId>tensquare_common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
        </dependency>

实体类Article:

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;

import java.io.Serializable;

/**
 * 文章实体类
 * Created by progr on 2019/3/12.
 */
@Document(indexName = "tensquare_article",type = "article")
public class Article implements Serializable {
    
    

    @Id
    private String id;
    //是否索引,就是看该域是否能被搜索
    //是否分词,就表示搜索的时候是整体匹配还是单词匹配
    //是否存储,就是是否在页面上显示
    @Field(index = true,analyzer="ik_max_word",searchAnalyzer = "ik_max_word")
    private String title;//标题

    @Field(index = true,analyzer="ik_max_word",searchAnalyzer = "ik_max_word")
    private String content;//文章正文

    private String state;//审核状态

    public String getId() {
    
    
        return id;
    }

    public void setId(String id) {
    
    
        this.id = id;
    }

    public String getTitle() {
    
    
        return title;
    }

    public void setTitle(String title) {
    
    
        this.title = title;
    }

    public String getContent() {
    
    
        return content;
    }

    public void setContent(String content) {
    
    
        this.content = content;
    }

    public String getState() {
    
    
        return state;
    }

    public void setState(String state) {
    
    
        this.state = state;
    }
}

ArticleSearchDao类:

/**
* 文章数据访问层接口
*/
public interface ArticleSearchDao extends
	ElasticsearchRepository<Article,String> {
    
    
}

ArticleSearchService类:

@Service
public class ArticleSearchService {
    
    
@Autowired
private ArticleSearchDao articleSearchDao;
  /**
  * 增加文章
  * @param article
  */
  public void add(Article article){
    
    
  	articleSearchDao.save(article);
  }
}

controller层:

@RestController
@CrossOrigin
@RequestMapping("/article")
public class ArticleSearchController {
    
    

    @Autowired
    private ArticleSearchService articleSearchService;

    @RequestMapping(method = RequestMethod.POST)
    public Result save(@RequestBody Article article){
    
    
        articleSearchService.add(article);
        return new Result(true, StatusCode.OK,"操作成功");
    }
 }

猜你喜欢

转载自blog.csdn.net/houzhicongone/article/details/120317396
今日推荐