简介

  Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。
  Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

安装:Window安装(转载)

  1. 下载Elasticsearch,地址:elasticsearch.org/download
  2. 下载jdk,百度搜索jdk下载即可
  3. 配置JAVA_HOME变量,配置方法在此文:http://jingyan.baidu.com/article/9113f81b0ceae22b3214c7e1.html
  4. 解压elasticsearch,打开cmd命令窗口,定位到bin目录,然后执行elasticsearch.bat 即可。
  5. 最后在浏览器中打开:http://localhost:9200/?pretty 效果如下:
  6. 插件head安装方法
  7. 首先下载head.zip 地址:https://github.com/mobz/elasticsearch-head
  8. 然后在elasticsearch安装目录下的plugins文件夹下建立head文件夹
  9. 将下载后的head文件copy到head文件夹下
  10. 运行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(站内搜索)的更多相关文章

  1. ElasticSearch(站内搜索) 转发 https://www.cnblogs.com/xibei666/p/5929970.html

    简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合.Elasticse ...

  2. es简单打造站内搜索

    最近挺忙的,在外出差,又同时干两个项目.白天一个晚上一个,特别是白天做的项目,马上就要上线了,在客户这里 三天两头开会,问题很多真的很想好好静下来怼代码,半夜做梦都能fix bugs~ 和客户交流真的 ...

  3. es站内站内搜索笔记(一)

    es站内站内搜索笔记(一) 第一节: 概述 使用elasticsearch进行网站搜索,es是当下最流行的分布式的搜索引擎及大数据分析的中间件,搜房网的主要功能:强大的搜索框,与百度地图相结合,实现地 ...

  4. 站内搜索(ELK)之数据目录

    在使用elasticsearch建设站内搜索时,随着数据不断丰富,为了数据管理更加精细化,必须建立并实时维护“数据目录”(在程序设计中对应的叫法“数据字典”). 数据目录需要包含以下几个维度:数据名称 ...

  5. 站内搜索(ELK)之开篇

    因工作需要,近期使用ELK搭建单位内部“站内搜索”,目前已将内部OA系统20余个流程的表单.附件的数据索引到elasticsearch中,包括打印复印流程.声像采集流程.远程文件发送.规章制度.内线电 ...

  6. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  7. 利用Solr服务建立的站内搜索雏形---solr1

    最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...

  8. Lucene.net站内搜索—6、站内搜索第二版

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  9. Lucene.net站内搜索—5、搜索引擎第一版实现

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

随机推荐

  1. ubuntu一些基本软件安装方法

    ubuntu一些基本软件安装方法 首先说明一下 ubuntu 的软件安装大概有几种方式:1. deb 包的安装方式deb 是 debian 系 Linux 的包管理方式, ubuntu 是属于 deb ...

  2. 探索ASP.NET MVC框架之控制器的查找与激活机制

    引言 前面一篇博文我们介绍了MVC框架的路由机制,我们知道一个URL请求如何从ASP.NET处理管线到达了IHttpHandler实例(MvcHandler).今天我们从MvcHandler来进行下一 ...

  3. [NHibernate]一对多关系(关联查询)

    目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...

  4. filterHTML

    function filterHTML(source) { return !source ? "" : source.replace(/]*>/g, "" ...

  5. PHP慢脚本日志和Mysql的慢查询日志

    1.PHP慢脚本日志 间歇性的502,是后端 PHP-FPM 不可用造成的,间歇性的502一般认为是由于 PHP-FPM 进程重启造成的. 在 PHP-FPM 的子进程数目超过的配置中的数量时候,会出 ...

  6. Silicon C8051F340之时钟系统

    一.背景 做个记录,以备下次快速开发. 二.正文 C8051F340有一个可编程内部高频振荡器.一个可编程内部低频振荡器.一个外部振荡器驱动电路 和一个4倍时钟乘法器.其中可编程内部高频振荡器在系统复 ...

  7. UI第九节——UIProgressView

    - (void)viewDidLoad {    [super viewDidLoad];        // 实例化 UIProgressView,高度是固定的    UIProgressView ...

  8. Github.com的Git和TortoiseGit图文教程

    图文介绍Windows系统下使用 Github账户 + msysgit + TortoiseGit 进行文件管理的方法. 安装 安装mysysgit 下载地址:msysgit 安装过程: 0.启动 1 ...

  9. jquery 页面加载时获取图片高度

    $(function () { $(window).load(function(){ alert($('img').height()); }); });

  10. 12个非常实用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...