(转)c#使用nest

elsticsearch中安装了x-pack后,查询时就需要用户名和密码了。 
无账号密码,不可访问 
curl http://192.168.0.2:9200/testindex/_count?pretty=true 
Authentication Required

访问basic认证的页面 
(1)通过user选项带上账号密码,返回正常数据 
curl –user elastic:changeme http://192.168.0.2:9200/testindex/_count?pretty=true

(2)在url中添加用户名和密码来访问: 
http://elastic:[email protected]:9200/testindex/_count?pretty=true

(3)在请求头中添加Authorization来访问: 
Authorization: “Basic 用户名和密码的base64加密字符串”

//HTTP Basic 验证客户端 C#实现:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.Credentials = CredentialCache.DefaultCredentials;

//获得用户名密码的Base64编码
string code= Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "username", "password")));

//添加Authorization到HTTP头
request.Headers.Add("Authorization", "Basic " + code);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());

string content= reader.ReadToEnd();

常用C#查询组件

官方组件Elasticsearch.Net & NEST

NEST手册


--
//建立映射类
    [ElasticsearchType(Name = "user", IdProperty = "Ncid")]
    public class User
    {

        [Number(Name = "ncid")]
        public int Ncid { get; set; }

        [Text(Name = "name")]
        public string Name { get; set; }

        [Text(Name = "webclass")]
        public string Webclass { get; set; }

        [Date(Name = "birthday", Format = "yyyy-MM-dd", IgnoreMalformed = true, Coerce = true)]
        public DateTime? Birthday { get; set; }

        [Text(Name = "eduname")]
        public string Eduname { get; set; }

        [Number(Name = "sex", IgnoreMalformed = true, Coerce = true)]
        public int Sex { get; set; }

        [Text(Name = "selfment")]
        public string Selfment { get; set; }

        [Date(Name = "refreshtime", IgnoreMalformed = true, Coerce = true)]
        public DateTime? Refreshtime { get; set; }

    }

//链接:
        private ElasticClient Client()
        {
            var nodes = new Uri[]
            {
                new Uri("http://192.168.0.2:9200")
            };
            var pool = new StaticConnectionPool(nodes);
            var settings = new ConnectionSettings(pool)
                .DefaultIndex("testindex")
                .BasicAuthentication("elastic", "changeme");

            return new ElasticClient(settings);

        }

//添加记录
            var client = Client();

            var modUser4 = new User
            {
                Ncid = 4,
                Name = "mygod4",
                Sex = 1,
                Eduname = "硕士",
                Birthday = DateTime.Now.AddYears(-20),
                Selfment = "中国长春市长春药店",
                Webclass = "www.b.com",
                Refreshtime = DateTime.Now,
            };

            client.Create(modUser4); 

//删除记录
            var client = Client();

            //删除单条记录
            var rtnDel = client.Delete<User>(new DocumentPath<User>(2));

            //删除多条记录
            var delIds = new List<int>() { 4, 5 };
            var bulkDel = new BulkRequest() { Operations = new List<IBulkOperation>() };
            foreach (var id in delIds)
            {
                bulkDel.Operations.Add(new BulkDeleteOperation<User>(id));
            }
            var resultDel = client.Bulk(bulkDel);

//更新记录
            var client = Client();
    //更新单条记录
            IUpdateRequest<User, User> request = new UpdateRequest<User, User>(new DocumentPath<User>(2))
            {
                Doc = new User()
                {
                    Name = "胡三刀",
                    Selfment = "test4update........"

                }
            };
            var resp = client.Update<User, User>(request);

            //更新多条记录
            var insIds = new List<int>() { 4, 5 };
            var bulkUpdate = new BulkRequest() { Operations = new List<IBulkOperation>() };
            foreach (var id in insIds)
            {
                var operation = new BulkUpdateOperation<User, object>(id);
                operation.Doc = new User{ Name = "胡一刀" };
                bulkUpdate.Operations.Add(operation);
            }
            var result = client.Bulk(bulkUpdate);

//查询
            //查询一条数据
            var modUser = client.Get<User>(3);
            var tweet = JsonConvert.SerializeObject(modUser.Source);

        //查询多条数据
            var modList = client.Search<User>( s => s
            .From(0)
            .Size(10)
            .Query(q =>
                    q.Term(t => t.Webclass, "www.b.com")
                    || q.Match(mq => mq.Field(f => f.Selfment).Query("中国"))
                )
            );

NEST使用方法 
http://www.cnblogs.com/huhangfei/p/5726650.html

其他组件 
plainElastic.net

参考:

http://www.cnblogs.com/eggTwo/p/4425269.html

http://blog.csdn.net/wulex/article/details/52138564

http://www.cnblogs.com/hyl8218/archive/2011/07/04/2097394.html 
http://blog.csdn.net/kingson88/article/details/51252606

原文

https://blog.csdn.net/manimanihome/article/details/55682494

原文地址:https://www.cnblogs.com/Hero-/p/9662483.html

时间: 2024-08-03 22:13:56

(转)c#使用nest的相关文章

NEST.net Client

NEST.net Client For Elasticsearch简单应用 由于最近的一个项目中的搜索部分要用到 Elasticsearch 来实现搜索功能,苦于英文差及该方面的系统性资料不好找,在实现时碰到了不少问题,现把整个处理过程的代码分享下,给同样摸索的人一些借鉴,同时希望有经验的大牛发现有问题的地方不吝斧正! 查询入口 webapi 的部分代码,把查询条件封装到 eJobQueryPosition 中 var param = new eJobQueryPosition         

(转)Elasticsearch .net client NEST使用说明 2.x

Elasticsearch.Net与NEST是Elasticsearch为C#提供的一套客户端驱动,方便C#调用Elasticsearch服务接口.Elasticsearch.Net是较基层的对Elasticsearch服务接口请求响应的实现,NEST是在前者基础之上进行的封装.本文是针对NEST的使用的总结. 引用 Install-Package NEST 包含以下dll NEST.dll Elasticsearch.Net.dll   Newtonsoft.Json.dll 概念 存储结构:

(转)NEST.net Client For Elasticsearch简单应用

由于最近的一个项目中的搜索部分要用到 Elasticsearch 来实现搜索功能,苦于英文差及该方面的系统性资料不好找,在实现时碰到了不少问题,现把整个处理过程的代码分享下,给同样摸索的人一些借鉴,同时希望有经验的大牛发现有问题的地方不吝斧正! 查询入口 webapi 的部分代码,把查询条件封装到 eJobQueryPosition 中 var param = new eJobQueryPosition            {                IndustryPost = ind

ElasticSearch NEST笔记

1. 什么是ElasticSearch? ElasticSearch is a powerful open source search and analytics engine that makes data easy to explore. 可以简单理解成索引加检索的工具,当然它功能多于此.ElasticSearch分为服务端与客户端,服务端提供REST API,客户端使用REST API. 2.怎么安装Elastic? 安装JDK(下载地址) 安装ElasticSearch(下载地址) 解压

Elasticsearch(八)【NEST高级客户端--Mapping映射】

要使用NEST与Elasticsearch进行交互,我们需要能够将我们的解决方案中的POCO类型映射到存储在Elasticsearch中的反向索引中的JSON文档和字段.本节介绍NEST中可用的所有不同功能,使POCO和Elasticsearch变得轻而易举. 在Elasticsearch中显式映射文档对于为给定的问题域提供定制搜索解决方案至关重要.虽然Elasticsearch能够基于遇到的该类型的第一个文档来推断索引中给定类型的映射,但推测的映射有时不足以构建一个非常优秀的搜索体验. 要显式

nest

d3.nest d3.nest表示一种嵌套结构.之所以成为嵌套是因为可以指定多个key访问器,这些访问器是一层一层嵌套的. 作用 将数组中的元素对象,按照key方法指定的属性,分组为层次结构.与SQL中的GROUP BY操作类似..嵌套后的叶节点都可以根据值进行排序而非叶节点可以通过key进行排序. 作用对象 对象数组 例如对于以下的列表数据: var yields = [ {yield: 27.00, variety: "aa", year: 1931, site: "Un

[NEST simulator] NEST example network计划

还未对nest基本语法做介绍,就直接来到了example部分,以后会陆续把语法部分补上. 本文主要介绍下我的nest example network plan. 按下列思路开展对example的学习: goal 1.找到对目标有借鉴意义的example(Preferred example)goal 2.深入理解以上examplegola 3.初步建立若干实验性NG(neural group),理解实验结果,尝试理解NG的特性,如能发现FNG(functional neural group)最好

Elastic Search 5.x Nest Multiple Queries C#

I'm using C# with those nuget packeges; <package id="Elasticsearch.Net" version="5.2.0" targetFramework="net462" /> <package id="NEST" version="5.2.0" targetFramework="net462" /> <

ElasticSearch.net NEST批量创建修改删除索引完整示例

本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求过多容易导致429 Too Many Request的错误,单个新增修改索引就非常不适用.其实Nest有批量新增.修改索引的功能,批量删除也可以.现将项目中采用Elasticsearch的C#代码分享

Elasticsearch NEST – Examples for mapping between Query and C#

Elasticsearch NEST – Examples for mapping between Query and C# During my training with Elasticsearch I would like to map a query with GET/POST method to C# syntax of NEST. It's very helpful for me to see how NEST composes its internal queries and sen