首先安装 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. nginx 升级为最新版 nginx -1.12.0

    标签:nginx 公司目前使用的nginx版本比较低(nginx-1.0.12),请网络安全公司做了一下“远程安全评估”,发现有下列漏洞: nginx URI处理安全限制绕过漏洞(CVE-2013-4 ...

  2. VMware Workstation Pro 11、12 密钥

    11:1F04Z-6D111-7Z029-AV0Q4-3AEH8 12:5A02H-AU243-TZJ49-GTC7K-3C61N

  3. c++输入

    1. char c = getchar(); 输入单个字符,可输入空格.换行符. 2. cin >> s; 不读取空格或换行符. 3. getline(cin, s); 输入一行到字符串s ...

  4. innobackupex 全备、增备脚本

    全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本: ...

  5. Handling Exceptions

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Exceptions/Tasks/Handling ...

  6. 【BZOJ3940】[USACO2015 Feb] Censoring (AC自动机的小应用)

    点此看题面 大致题意: 给你一个文本串和\(N\)个模式串,要你将每一个模式串从文本串中删去.(此题是[BZOJ3942][Usaco2015 Feb]Censoring的升级版) \(AC\)自动机 ...

  7. CentOS 7 防火墙 出现Failed to start iptables.service: Unit iptables.service failed to load

    错误信息如下: [root]# service iptables start Redirecting to /bin/systemctl start iptables.service Failed t ...

  8. 解决ssh登录慢,等待时间长的问题

    有时候在ssh远程登录到其他主机上时发现登录时间太长,经过亲自测试,发现主要有两个问题会导致ssh登录慢: 1.使用了dns反查,这样的话当ssh某个IP时,系统会试图通过DNS反查相对应的域名,如果 ...

  9. modprobe与insmod的区别

    linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别1.insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址.写法为:        insmod dr ...

  10. AOSP常见漏洞类型简介

    Heap/Stack Overflow(CVE-2017-0541) 漏洞出现在PushcdlStack函数中,如下所示   # /external/sonivox/arm-wt-22k/lib_sr ...