(转)NEST.net Client For Elasticsearch简单应用
查询入口
{
IndustryPost = industryPost,
Region = region,
MinSalary = minSalary,
};
return FailActionRequest(gl.webapi_error);
if (gl.total <= 0)
{
return OkActionRequest(gl);
}
return OkListActionRequest(gl);
QueryPositionsAsync 部分代码
//查看搜索语句
//var temp= Encoding.UTF8.GetString(resultData.RequestInformation.Request).Trim();
if (!resultData.Hits.Any())
{
return new GListResult<eJobPositionSimple>(new eJobPositionSimple[0]);
}
var result = resultData.Documents;
var g1 = result.Select(position => new eJobPositionSimple
{
Pstn_Id = position._id,
...
Phone = position.Phone,
Name = position.BrandName,
}).ToList();
return new GListResult<eJobPositionSimple>(g1, (int) resultData.Total);
QueryAsync部分代码
/// 生成搜索客户端
/// </summary>
/// <returns></returns>
private static ElasticClient GetSearchClient()
{
var connectString = ConfigurationManager.ConnectionStrings["ElasticSearch"].ConnectionString;
var nodesStr = connectString.Split('|');
var nodes = nodesStr.Select(s => new Uri(s)).ToList();
var connectionPool = new SniffingConnectionPool(nodes);
var settings = new ConnectionSettings(connectionPool).SetDefaultIndex("position");
settings.SetDefaultPropertyNameInferrer(p => p.ToString());
var client = new ElasticClient(settings);
return client;
}
{
var client = GetSearchClient();
var resultData = await client.SearchAsync<QPosition>(s =>
s.Index("position").Type("tbJobPosition").
Query(
q => QueryContainerPosition(condition, searchText, q)).
SortDescending(f => f.UpdateTime).Skip(skip).Take(top));
return resultData;
}
/// 生成职位查询表达式
/// </summary>
/// <param name="condition">职位条件</param>
/// <param name="searchText">查询的关键字</param>
/// <param name="q">用于返回的查询表达式</param>
/// <returns>返回用于搜索的表达式</returns>
private static QueryContainer QueryContainerPosition(eJobQueryPosition condition, string searchText, QueryDescriptor<QPosition> q)
{
var query = new QueryContainer();
//未过有效期
query &= q.Range(rr => rr.OnField(ff => ff.ExpireTime).GreaterOrEquals(DateTime.UtcNow.Date));
if (!string.IsNullOrWhiteSpace(searchText))
{
query &= QueryText(searchText, q, query);
}
return query;
query1 = q.Term(s => s.OnField(ff => ff.BrandName).Value("szbrandname1"));
var query2 = new QueryContainer();
query2 = q.Term(s => s.OnField(ff => ff.BrandName).Value("szbrandname2"));
var query3 = new QueryContainer();
query2 = q.Term(s => s.OnField(ff => ff.BrandName).Value("szbrandname3"));
query = query1 || query2 || query3;
}
/// 搜索文本表达式,一定要放在所有表达式的最后
/// </summary>
/// <param name="searchText">搜索文本</param>
/// <param name="q">搜索表达式</param>
/// <param name="query">要返回的搜索表达式类</param>
/// <returns></returns>
private static QueryContainer QueryText(string searchText, QueryDescriptor<QPosition> q, QueryContainer query)
{
if (!string.IsNullOrWhiteSpace(searchText))
{
query = q.MatchPhrase(p => p.OnField(o => o.Descript).Query(searchText));
}
return query;
}
using System.Configuration;
using System.Linq;
using System.Threading.Tasks;
using **.Entity;
using Elasticsearch.Net.ConnectionPool;
using Nest;
参考资料网址
(转)NEST.net Client For Elasticsearch简单应用的更多相关文章
- NEST.net Client For Elasticsearch简单应用
NEST.net Client For Elasticsearch简单应用 由于最近的一个项目中的搜索部分要用到 Elasticsearch 来实现搜索功能,苦于英文差及该方面的系统性资料不好找,在实 ...
- NEST.net Client
NEST.net Client For Elasticsearch简单应用 由于最近的一个项目中的搜索部分要用到 Elasticsearch 来实现搜索功能,苦于英文差及该方面的系统性资料不好找,在实 ...
- Elastcisearch.Nest 7.x 系列`伪`官方翻译:通过 NEST 来快捷试用 Elasticsearch
本系列已经已经全部完成,完整版可见:https://blog.zhuliang.ltd/categories/Elasticsearch/ 本系列博文是"伪"官方文档翻译(更加本土 ...
- Elasticsearch简单使用和环境搭建
Elasticsearch简单使用和环境搭建 1 Elasticsearch简介 Elasticsearch是一个可用于构建搜索应用的成品软件,它最早由Shay Bannon创建并于2010年2月发布 ...
- elasticsearch简单查询
elasticsearch简单查询示例: { "from": "0", //分页,从第一页开始 "size": "10" ...
- elasticsearch简单实现
初次接触分布式是全文搜索引擎,之前都是spinx+coreseek,先简单实现初步了解先 官方文档:https://www.elastic.co/guide/cn/elasticsearch/guid ...
- [000]socket通信--server和client实现的简单例子
在C语言中就学过scanf和printf,其实理解socket就跟这两个输入输出差不多,只不过是信息的传输而已. 1.TCP服务器端(server)的默认函数调用顺序: 按照上述的调用顺序,我们可以来 ...
- 转:ElasticSearch 简单入门
原文来自于:http://www.oschina.net/translate/elasticsearch-getting-started?cmp 教程样例 我们将要部署一个非常简单的应用--在一个部门 ...
- 分布式ElasticSearch简单介绍
这里我们解释一些通用的术语,比如集群(cluster).节点(node)和分片(shard).Elasticsearch的扩展机制,以及它怎样处理硬件故障.在此将探索怎样创建你的集群(cluster) ...
随机推荐
- STM32(13)——SPI
简介: SPI,Serial Peripheral interface串行外围设备接口. 接口应用在:EEPROM, FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间. 特点 ...
- 请求报文的方法及get与post的区别
请求报文的方法及get与post的区别 请求的起始以方法作为开始,方法用来告诉服务器要如何做. 在开发中通常有两种请求方式. get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 ...
- python教程(二)·循环语句
计算机程序中常常需要重复执行某些语句,我们总不能将同一语句写上百遍吧?所以在python中,当然其它计算机语言也是,有一种语句可以重复执行相同的操作,这种语句就是 "循环语句",而 ...
- 常用数字信号的产生(C实现)-均匀分布&正态分布
小白博主开始学DSP之路,为了激励自己能坚持下去,写一系列博客来记录下来,也欢迎与大家一起讨论.介于我能力所限,这里学习目标定为,学习一个基础知识,写一个C语言程序实现, 最后会形成一个C的函数库,方 ...
- lvs健康检查脚本第三版
如下是学习完马哥视频lvs后改写的健康检查脚本第三版.利用工作之余三四个小时时间才把整个逻辑搞清楚,有时候自己都有点蒙圈,尤其是在写到while循环的时候.总的来说非常感谢马哥的慷慨解囊!脚本原稿及思 ...
- nmap教程(下)
九.脚本引擎 脚本文件存放在/usr/share/nmap/scripts目录下 SCRIPT SCAN: -sC: equivalent to --script=default #启用默认类脚本 - ...
- FpSpread基本句法
1, 在调用的.aspx页面开头注册: "FarPoint.Web.Spread" Assembly="FarPoint.Web.SpreadJ, V ...
- JQuery.extend扩展实现同步post请求
有时需要在jQuery中实现同步post请求,而jquery自带的是异步,需要通过JQuery.extend扩展. 支持ie和firefox,方法转载而来.需要在submit前将form.append ...
- unity3d 计时功能舒爽解决方案
上次也写了一篇计时功能的博客 今天这篇文章和上次的文章实现思路不一样,结果一样 上篇文章地址:http://www.cnblogs.com/shenggege/p/4251123.html 思路决定一 ...
- JMeter性能测试的基础知识和个人理解
JMeter性能测试的基础知识和个人理解 1. JMeter的简介 JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...