首先安装 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. java 串口通信实现流程

    1.下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java 2.下载下来的包解压后按照说明放到JAVA_HOME即JAVA的安装路径下面去 ...

  2. libav(ffmpeg)简明教程(2)

    距离上一次教程又过去了将近一个多月,相信大家已经都将我上节课所说的东西所完全消化掉了. 这节课就来点轻松的,说说libav的命令使用吧. 注:遇到不懂的或者本文没有提到的可以用例如命令后加 --hel ...

  3. slice 与 substring

    Array数组:slice() slice() : 截取 Array 的部分元素,然后返回一个新的Array. var arr = ['a', ' b', 'c', 'd', 'e', 'f', 'g ...

  4. kubernetes-控制器Deployment和DaemonSet(八)

    Pod与controllers的关系 •controllers:在集群上管理和运行容器的对象•通过label-selector相关联•Pod通过控制器实现应用的运维,如伸缩,升级等 控制器又称工作负载 ...

  5. Windows服务调试

    Windows 服务(附服务开发辅助工具) 转: http://www.cnblogs.com/BoyXiao/archive/2011/08/07/2130208.html 近来在 Windows ...

  6. Binary Agents-freecodecamp算法题目

    Binary Agents 1.要求 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 2.思路 用.split(' ')将输入二进制字符串转化为各个二进制数字符串组成的数组 用 ...

  7. 二十八、MySQL 元数据

    MySQL 元数据 你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. M ...

  8. nginx下根据指定路由重定向

    前言: 最近在搭建vue后台,后端接口是PHP写的,线上构建好之后,需要请求其他域名下的接口,开发环境已经使用proxytable解决了接口问题,为了开发和生成的代码一致, 编译后的代码,放在ngin ...

  9. 同时启动多个tomcat的配置信息

    同时启动多个tomcat的配置信息 下面把该配置文件中各端口的含义说明下. <Server port="8005" shutdown="SHUTDOWN" ...

  10. PHP namespace、abstract、interface、trait使用介绍

    小菜鸟一枚,一直搞不懂 namespace.abstract.interface.trait 这些关系,就抽出几天时间研究,做个总结,不足之处希望大家指正交流. namespace 命名空间 介绍:顾 ...