ElasticSearch(站内搜索)
简介
Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。
Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
- 实时分析的分布式搜索引擎。
- 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
安装:Window安装(转载)
- 下载Elasticsearch,地址:elasticsearch.org/download
- 下载jdk,百度搜索jdk下载即可
- 配置JAVA_HOME变量,配置方法在此文:http://jingyan.baidu.com/article/9113f81b0ceae22b3214c7e1.html
- 解压elasticsearch,打开cmd命令窗口,定位到bin目录,然后执行elasticsearch.bat 即可。
- 最后在浏览器中打开:http://localhost:9200/?pretty 效果如下:
- 插件head安装方法
- 首先下载head.zip 地址:https://github.com/mobz/elasticsearch-head
- 然后在elasticsearch安装目录下的plugins文件夹下建立head文件夹
- 将下载后的head文件copy到head文件夹下
- 运行es,在浏览器中打开:http://localhost:9200/_plugin/head/ 出现这个界面就可以。
使用:
1、Nuget下载安装 plainelastic.net 第三方类库;
2、编写ElasticSearchHelper类:
using PlainElastic.Net;
using PlainElastic.Net.Queries;
using PlainElastic.Net.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace BookMgr
{
public class ElasticSearchHelper
{
public static readonly ElasticSearchHelper Intance = new ElasticSearchHelper(); private ElasticConnection Client; private ElasticSearchHelper()
{
Client = new ElasticConnection("192.168.1.8", );
} /// <summary>
/// 数据索引
/// </summary>
/// <param name="indexName">索引名称</param>
/// <param name="indexType">索引类型</param>
/// <param name="id">索引文档id,不能重复,如果重复则覆盖原先的</param>
/// <param name="jsonDocument">要索引的文档,json格式</param>
/// <returns>索引结果</returns>
public IndexResult Index(string indexName, string indexType, string id, string jsonDocument)
{ var serializer = new JsonNetSerializer(); string cmd = new IndexCommand(indexName, indexType, id); OperationResult result = Client.Put(cmd, jsonDocument); var indexResult = serializer.ToIndexResult(result.Result); return indexResult;
} /// <summary>
/// 数据索引
/// </summary>
/// <param name="indexName">索引名称</param>
/// <param name="indexType">索引类型</param>
/// <param name="id">索引文档id,不能重复,如果重复则覆盖原先的</param>
/// <param name="jsonDocument">要索引的文档,object格式</param>
/// <returns>索引结果</returns>
public IndexResult Index(string indexName, string indexType, string id, object document)
{
var serializer = new JsonNetSerializer(); var jsonDocument = serializer.Serialize(document); return Index(indexName, indexType, id, jsonDocument);
} /// <summary>
/// 全文检索
/// </summary>
/// <typeparam name="T">搜索类型</typeparam>
/// <param name="indexName">索引名称</param>
/// <param name="indexType">索引类型</param>
/// <param name="query">查询条件(单个字段或者多字段或关系)</param>
/// <param name="from">当前页(0为第一页)</param>
/// <param name="size">页大小</param>
/// <returns>搜索结果</returns>
public SearchResult<T> Search<T>(string indexName, string indexType, QueryBuilder<T> query, int from, int size)
{
var queryString = query.From(from).Size(size).Build(); var cmd = new SearchCommand(indexName, indexType); var result = Client.Post(cmd, queryString); var serializer = new JsonNetSerializer(); return serializer.ToSearchResult<T>(result);
}
}
}
3、MVC中调用ElasticSearchHelper类:
[HttpPost]
public ActionResult BMsg(Book DataModel)
{
DataModel.BookWriteTime = DateTime.Now;
DBBookMgr.BooksOpeart(DataModel, OpeartOption.NEW); var result = ElasticSearchHelper.Intance.Index("db_book", "searchbook", DataModel.Id.ToString(), DataModel); return View(DataModel);
}
看下效果图:使用框架(MVC5+Dapper+ElasticSearch)

4、参考博客:
ElasticSearch的安装:http://www.cnblogs.com/panzi/p/5659697.html
ElasticSearch系列学习: http://www.cnblogs.com/eggTwo/p/4039779.html
ElasticSearch使用:http://blog.csdn.net/wulex/article/details/52144145
5、未完待续内容:
ElasticSearch中文分词查询的处理
ElasticSearch(站内搜索)的更多相关文章
- ElasticSearch(站内搜索) 转发 https://www.cnblogs.com/xibei666/p/5929970.html
简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合.Elasticse ...
- es简单打造站内搜索
最近挺忙的,在外出差,又同时干两个项目.白天一个晚上一个,特别是白天做的项目,马上就要上线了,在客户这里 三天两头开会,问题很多真的很想好好静下来怼代码,半夜做梦都能fix bugs~ 和客户交流真的 ...
- es站内站内搜索笔记(一)
es站内站内搜索笔记(一) 第一节: 概述 使用elasticsearch进行网站搜索,es是当下最流行的分布式的搜索引擎及大数据分析的中间件,搜房网的主要功能:强大的搜索框,与百度地图相结合,实现地 ...
- 站内搜索(ELK)之数据目录
在使用elasticsearch建设站内搜索时,随着数据不断丰富,为了数据管理更加精细化,必须建立并实时维护“数据目录”(在程序设计中对应的叫法“数据字典”). 数据目录需要包含以下几个维度:数据名称 ...
- 站内搜索(ELK)之开篇
因工作需要,近期使用ELK搭建单位内部“站内搜索”,目前已将内部OA系统20余个流程的表单.附件的数据索引到elasticsearch中,包括打印复印流程.声像采集流程.远程文件发送.规章制度.内线电 ...
- 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做 ...
- 利用Solr服务建立的站内搜索雏形---solr1
最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...
- Lucene.net站内搜索—6、站内搜索第二版
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- Lucene.net站内搜索—5、搜索引擎第一版实现
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
随机推荐
- JDK小Bug汇总
Java官方的Logger.getGlobal().info无效 无效代码 Logger.getGlobal().info("start"); 解决方案(三选一): Logger. ...
- spring 事务传播特性 和隔离级别
事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务 ...
- 浅谈CSRF攻击方式
一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...
- Ubuntu学习总结-07 Nodejs和npm的安装
一 安装NodeJS 1 下载nodejs源码 从以下网址下载最新的Nodejs源码 https://nodejs.org/en/download/ 2 安装依赖的 python,gcc,g++ 函数 ...
- Effective java读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...
- yii2 session的使用方法
yii2打开session use yii\web\Session; $session = Yii::$app->session; // check if a session is alread ...
- centos 7.1 apache 源码编译安装
Apache编译安装 一,需要软件: http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz 1.apr-1.5.2.tar.gz http://mi ...
- centos6.5安装oracle11g_2
centos7安装oracle数据库不成功,换成centos6.5安装,可以安装成功,记录一下 安装系统时,主机名如果不是用localhost,安装成功后,要用主机名和ip做映射,修改/etc/hos ...
- 数据存储_SQLite常用的函数
一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **ppDb // 数据 ...
- IoC/DI基本思想的演变
---------------------------------------------------------------------------------- (1)IoC/DI的概念 IoC ...