Elasticsearch.Net Nest 5.0.0 用法

1:引用dll

using Elasticsearch.Net;
using Nest;

2:代码(如下代码是查询以及创建index的基本用法,包含模糊查询和精确查询)

            var node = new Uri("http://localhost:9200");

            var connectionPool = new SniffingConnectionPool(new[] { node });

            var config = new ConnectionConfiguration(connectionPool).DisableDirectStreaming().BasicAuthentication("admin", "123qwe!@#").RequestTimeout(TimeSpan.FromSeconds(60));

            var client = new ElasticLowLevelClient(config);

            var settings = new ConnectionSettings(new Uri("http://localhost:9200")).DefaultIndex("2017.03.08").DisableDirectStreaming();

            var client1 = new ElasticClient(settings);

            var request = new SearchRequest
            {
                From = 0,
                Size = 10,
                //Query = new TermQuery { Field = "Name", Value = "FundPayService" },
                PostFilter = new QueryContainer(new MatchAllQuery())

            };

            //var response = client1.Search<logs>(request);

            //var result = client1.Search<logs>(s => s.Query(q => q.MatchAll()));
            //IReadOnlyCollection<logs> content = result.Documents;

            //按照字段查询--或关系
            var r1 = new SearchRequest { Query = new MatchQuery { Field = "IP", Query = " BACKEND1" } };
            var result2 = client1.Search<logs>(r1);
            //var r4 =client1.Search<logs>(s => s.Query(b => b.QueryString(t1 => t1.DefaultField("IP").Query("BACKEND"))));  
           
             var filter= new SearchRequest<logs>
            {
                Query = new MatchQuery
                {
                    Field = "IP",
                    Query = "BACKEND"
                }
            };
             var result4 = client1.Search<logs>(filter);
            IReadOnlyCollection<logs> content2 = result2.Documents;

            //模糊查询1
            var r5 = client1.Search<logs>(s => s.Query(q => q.QueryString(p => p.Query("BACKEN*"))));
            var r55 = r5.Documents;
            //模糊查询2
            var filter2 = new SearchRequest<logs>
            {
                Query =new MatchQuery
                {
                    Field = "IP",
                    Query = "BACKEN"
                }
            };
            r5 = client1.Search<logs>(filter2);
            //范围查询
            //下面这段代码会查询不出任何东西。因为生成json中的field字段:Scur 是为scur。 由于elastic里面的字段是Scur。导致无法找到该字段。建议以后elastic里面的字段都为小写
            //var r6 = client1.Search<logs>(s => s.Query(q => q.Range(p=>p.Field(obj=>obj.Scur).GreaterThanOrEquals(1).LessThanOrEquals(5))));
            var r6 = client1.Search<logs>(s => s.Query(q => q.Range(p => p.Field("Scur").GreaterThanOrEquals(1).LessThanOrEquals(5))));
            var r66 = r5.Documents;

            //创建索引 索引字段必须小写
            ICreateIndexResponse icr =client1.CreateIndex("ip2");
            //建立索引连接
            var settings2 = new ConnectionSettings(new Uri("http://localhost:9200")).DefaultIndex("ip2").DisableDirectStreaming();
            var client2 = new ElasticClient(settings2);
            IIndexResponse iir =client2.Index<logs>(new logs { IP = "F", Scur = "2" });
            //查询所有index数据
             var r7 =client2.Search<logs>(q => q.MatchAll()).Documents;
            //对于简单结构的数据
             var r8 = client2.Search<logs>(p => p.Query(q => q.Term(f => f.Field(obj => obj.IP).Value('F'))));
             r8 = client2.Search<logs>(p => p.PostFilter(q => q.Term(f => f.Field(obj => obj.IP).Value('F'))));

            //对于有嵌套结构的数据
             r8 = client2.Search<logs>(p => p.Query(q => q.Nested(x => x.Query(k => k.Term(c => c.Field(obj => obj.IP).Value('F'))))));
            var r88=r8.Documents;

如果发现代码和出来的效果不一致,可以通过断点调试查看api字段里拼接好的查询条件,拷贝放进elasticsearch中的复合查询界面,查看哪里出了问题。

--复合查询界面在插件head里,需要自己安装。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值