首先安装 elasticsearch 服务

OSX 系统

brew install elasticsearch
brew services start elasticsearch

测试服务是否启动
浏览器输入 localhost:9200

{
"name" : "Lynx",
"cluster_name" : "elasticsearch_marin",
"cluster_uuid" : "acE95aJmQxuMz0cx47b2WQ",
"version" : {
"number" : "2.4.6",
"build_hash" : "5376dca9f70f3abef96a77f4bb22720ace8240fd",
"build_timestamp" : "2017-07-18T12:17:44Z",
"build_snapshot" : false,
"lucene_version" : "5.5.4"
},
"tagline" : "You Know, for Search"
}

出现类似上述信息 number 表示当前 elasticsearch 的版本号,需要注意的是 elasticsearch 现在分为 v2+ 和 v5+ 两个版本,要根据自己的版本来选择 searchkick 第九影院对应的版本是否合适

gemfile中 引用 searchkick

这里我们是使用了 1.3.3 版本的

gem 'searchkick', '1.3.3'

model 中引用searchkick

现在我们已经有搜索服务了,现在要配置需要搜索的 model
在 model 中引用 searchkick

# 全文检索  searchkick
searchkick

给 products 表重建索引

Product.reindex

进行搜索

products = Product.search "apples"

这时就会得到结果集。
如果是简单的应用到这里就可以满足要求 ,当然我们有时候需要一些个性化的配置。

给部分字段建立索引

reindex 方法会默认给所有的字段建立索引,但是由于字段过长,或者性能原因我们只需要部分字段有索引 可以这样:

def search_data
{
name: name
}
end

重写 search_data 方法加入name 这样就只给 name 字段打索引了

关联表建索引

class Catalog < ActiveRecord::Base
has_many :products
end
class Product www.dijiuyy.com < ActiveRecord::Base
belongs_to :catalog
end
def search_data
{
name: name
}.merge{
catalog_name: catalog.name
}
end

这里 我们给 product 表添加一个索引叫做 分类名称 catalog_name
这样搜索分类名称就可以搜索出 同一个分类的 商品列表了

指定查询字段

Product.search key

这个方法会默认搜索 所有的字段 并返回 所有包含 key 的结果集。
如果我们想搜索指定的字段该如何设置呢?

def self.elasticsearch(params = {}, options = {})
key = params[:key].blank? ? "*" : params[:key] # 关键字
params[:page] ||= 1 # 分页
params[:per_page] ||= 20 # 每页条数
where_hash = {
status: 'success', # 固定筛选值
}
conditions = {where: where_hash}
conditions[:page] = params[:page]
conditions[:per_page] = params[:per_page]
search key, conditions
end

这样 就相当于给结果集添加 scope,和分页效果,前端配合 kaminari 就可以实现分页效果了

@articles = Product.elasticsearch(params)

action 中将设定好的参数传入就可以得到结果集了

QWQ~!!

为 rails 本地项目搭建 elasticsearch 服务的更多相关文章

  1. 【2020-03-21】Dubbo本地环境搭建-实现服务注册和消费

    前言 本周主题:加班工作.本周内忙于CRUD不能自拔,基本每天都是九点半下班,下周上线,明天还要加班推进进度.今天是休息日,于是重拾起了dubbo,打算近期深入了解一下其使用和原理.之所以说是重拾,是 ...

  2. IDEA项目搭建十三——服务消费端与生产端通信实现

    一.简介 之前已经完成了EurekaClient的服务生产者和Feign的服务消费者模块的搭建,现在实现统一的通信约定 (1) 统一Request结构 (2) 统一Response结构 (3) 统一E ...

  3. centos 7 x64 搭建 elasticsearch 服务

    1.确认服务是否已经安装java 8 环境 使用 java -version 查看 2.在java 官网下载安装包,然后上传到服务器响应的文件中 3.使用 tar -zxvf 文件夹 解压到响应的文件 ...

  4. 【spring colud】spring cloud微服务项目搭建【spring boot2.0】

    spring cloud微服务项目搭建 =================================== 示例版本: 1.spring boot 2.0版本 2.开发工具 IntellJ IDE ...

  5. Centos6.9 搭建rsync服务端与客户端 案例:全网备份项目

    rsync的企业工作场景说明 1)定时备份 1.1生产场景集群架构服务器备份方案项目 借助cron+rsync把所有客户服务器数据同步到备份服务器 2)实时复制 本地数据传输模式(local-only ...

  6. JBOSS安装与配置搭建本地项目环境(方便前端开发调式)

    JBOSS安装与配置搭建本地项目环境  什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种. 环境搭建如下: 一:首先安装JDK,配置环境变量(PAT ...

  7. vue.js+koa2项目实战(四)搭建koa2服务端

    搭建koa2服务端 安装两个版本的koa 一.版本安装 1.安装 koa1 npm install koa -g 注:必须安装到全局 2.安装 koa2 npm install koa@2 -g 二. ...

  8. Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目

    Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目 https://blog.csdn.net/alinyua/article/details/8303 ...

  9. ubantu elasticsearch服务搭建

    1.jdk 1.8以上,elasticsearch是java开发的 [root@VM_58_118_centos sgconfig]# java -version java version " ...

随机推荐

  1. Python Visual Studio 2015

    对于一直是C#开发的我来说,上Python是老早就想的事情了. 上次有个项目开始做就说要用Python,后来因为不太熟练就给推掉了.现在终于还是有机会开始下Python之旅. 因为是在Visual S ...

  2. codevs 4052 黎恒健大战YJY

     时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题目描述 Description 现在,黎恒健与YJY由于身处异地,非常迫切地想在最短的时间内相遇,然后干一架.但 ...

  3. Liunx开发(Extjs4.1+desktop+SSH2超强视频教程实践)(1)

    下周一出差宁波了,周六日就折腾点视频: 跟着视频教程开发,不过开发环境换linux,上月找工作,某个吉祥物是松鼠的公司要求用linux开发,没用过的,连面试机会都不给,极其高冷:好吧,咱就试试,用li ...

  4. World Wind Java开发之五——读取本地shp文件(转)

    http://blog.csdn.net/giser_whu/article/details/41484433 World Wind Java 使用IconLayer图层类表现点和多点数据,使用Ren ...

  5. hbase查询基于标准sql规范中间件Phoenix

    Phoenix是个很好的hbase 查询工具,在hbase中安装也很简单,可以按照 http://www.cnblogs.com/laov/p/4137136.html 这个连接中进行配置客户端和服务 ...

  6. AngularJs学习笔记-服务

    服务 (1)在模块中声明的服务对所有组件可见 (2)在组件中声明的服务对自己本身和其子组件 (3)在组件中声明的服务会覆盖在模块中声明的服务 (4)通过@Injectable()装饰器可以在服务中注入 ...

  7. javaweb基础(27)_jsp标签库实例

    一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.I ...

  8. 关于小程序button控件上下边框的显示和隐藏问题

    问题: 小程序的button控件上下有一条淡灰色的边框,在空件上加上了样式 border:(none/0); 都没办法让button上下的的边框隐藏: 代码如下 <button class=&q ...

  9. Mint UI文档

    Mint UI文档:http://elemefe.github.io/mint-ui/#/ 一.Mint UI的安装和基本用法. 1.NPM :npm i mint-ui -S 建议使用npm进行安装 ...

  10. 短短几行css代码实现滚动条效果

    如何实现使用css实现滚动条效果 实现效果,运用线性渐变来实现功能 假设我们的页面被包裹在 <body> 中,可以滚动的是整个 body,给它添加这样一个从左下到到右上角的线性渐变: bo ...