elasticsearch 如何将percolator查询写入嵌套程序,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 如何将percolator查询写入嵌套程序,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 如何将percolator查询写入嵌套程序

elasticsearch 如何将percolator查询写入嵌套程序,elasticsearch,nest,elasticsearch,Nest,我在弹性搜索中有一个percolator查询,如下所示 put /skill-index PUT /skill-index/skill-type/_mapping { "properties" : { "message" : { "type": "string" } } } PUT /skill-index/.percolator/101 { "query" : { "match" : {

我在弹性搜索中有一个percolator查询,如下所示

put /skill-index

PUT /skill-index/skill-type/_mapping
{
    "properties" : {
        "message" : {
            "type": "string"
        }

    }

}

PUT /skill-index/.percolator/101
{
    "query" : {
        "match" : {
            "message" : "crossstitch"
        }
    }

}

PUT /skill-index/.percolator/102
{
    "query" : {
        "match" : {
            "message" : "chainstitch"
        }
    }

}

PUT /skill-index/.percolator/103
{
    "query" : {
        "match" : {
            "message" : "stemstitch"
        }
    }

}

PUT /skill-index/.percolator/104
{
    "query" : {
        "match" : {
            "message" : "longandshort"
        }
    }

}



GET /skill-index/skill-type/_percolate  
{
    "doc" : {
        "message" : "Know chainstitch and stemstitch"
    }
}
现在,我想在我的NEST程序中使用GET查询。 我有一个叫做“技能”的实体。我将传递一个变量字符串,比如“knowchainstitch和stemstitch”

我想检索值为102103

所以我应该设计一些类似的东西 申报清单 列表技能列表=新列表 之后,我想要一个lambda表达式查询,类似于

var skillsList=client.Percolate(……传递变量并获得结果……)


你能帮我在NEST中构建查询吗?这个例子将解释如何在NEST中处理percolators

internal class Program
{
    private static void Main(string[] args)
    {
        var indexName = "indexname";

        var uri = new Uri("http://localhost:9200");
        var settings = new ConnectionSettings(uri)
            .SetDefaultIndex(indexName)
            .EnableTrace();
        var client = new ElasticClient(settings);

        var indicesResponse = client.DeleteIndex(descriptor => descriptor.Index(indexName));

        client.CreateIndex(descriptor => descriptor.Index(indexName).AddMapping<Document>(m => m.MapFromAttributes()));

        var percolate = client.RegisterPercolator<Document>("p1",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("test"))));

        var percolate2 = client.RegisterPercolator<Document>("p2",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("something"))));

        var percolateResponse =
            client.Percolate<Document>(descriptor => descriptor.Index(indexName).Document(new Document {Name = "this is a test"}));

        //Matches contain percolator p1 
        var percolatorIds = percolateResponse.Matches.Select(x => x.Id);

        Console.ReadKey();
    }
}

public class Document
{
    public int Id { get; set; }
    public string Name { get; set; }
}
内部类程序
{
私有静态void Main(字符串[]args)
{
var indexName=“indexName”;
var uri=新的uri(“http://localhost:9200");
var设置=新连接设置(uri)
.SetDefaultIndex(indexName)
.EnableTrace();
var客户端=新的ElasticClient(设置);
var indicatesresponse=client.DeleteIndex(descriptor=>descriptor.Index(indexName));
CreateIndex(descriptor=>descriptor.Index(indexName).AddMapping(m=>m.MapFromAttributes());
var percolate=client.RegisterPercolator(“p1”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“test”));
var percolate2=client.RegisterPercolator(“p2”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“某物”));
var Percolaters响应=
Percolate(descriptor=>descriptor.Index(indexName).Document(新文档{Name=“这是一个测试”}));
//匹配项包含percolator p1
var percolatorIds=percolateResponse.Matches.Select(x=>x.Id);
Console.ReadKey();
}
}
公共类文档
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}

此示例将解释如何处理NEST中的过滤器

internal class Program
{
    private static void Main(string[] args)
    {
        var indexName = "indexname";

        var uri = new Uri("http://localhost:9200");
        var settings = new ConnectionSettings(uri)
            .SetDefaultIndex(indexName)
            .EnableTrace();
        var client = new ElasticClient(settings);

        var indicesResponse = client.DeleteIndex(descriptor => descriptor.Index(indexName));

        client.CreateIndex(descriptor => descriptor.Index(indexName).AddMapping<Document>(m => m.MapFromAttributes()));

        var percolate = client.RegisterPercolator<Document>("p1",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("test"))));

        var percolate2 = client.RegisterPercolator<Document>("p2",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("something"))));

        var percolateResponse =
            client.Percolate<Document>(descriptor => descriptor.Index(indexName).Document(new Document {Name = "this is a test"}));

        //Matches contain percolator p1 
        var percolatorIds = percolateResponse.Matches.Select(x => x.Id);

        Console.ReadKey();
    }
}

public class Document
{
    public int Id { get; set; }
    public string Name { get; set; }
}
内部类程序
{
私有静态void Main(字符串[]args)
{
var indexName=“indexName”;
var uri=新的uri(“http://localhost:9200");
var设置=新连接设置(uri)
.SetDefaultIndex(indexName)
.EnableTrace();
var客户端=新的ElasticClient(设置);
var indicatesresponse=client.DeleteIndex(descriptor=>descriptor.Index(indexName));
CreateIndex(descriptor=>descriptor.Index(indexName).AddMapping(m=>m.MapFromAttributes());
var percolate=client.RegisterPercolator(“p1”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“test”));
var percolate2=client.RegisterPercolator(“p2”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“某物”));
var Percolaters响应=
Percolate(descriptor=>descriptor.Index(indexName).Document(新文档{Name=“这是一个测试”}));
//匹配项包含percolator p1
var percolatorIds=percolateResponse.Matches.Select(x=>x.Id);
Console.ReadKey();
}
}
公共类文档
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}

此示例将解释如何处理NEST中的过滤器

internal class Program
{
    private static void Main(string[] args)
    {
        var indexName = "indexname";

        var uri = new Uri("http://localhost:9200");
        var settings = new ConnectionSettings(uri)
            .SetDefaultIndex(indexName)
            .EnableTrace();
        var client = new ElasticClient(settings);

        var indicesResponse = client.DeleteIndex(descriptor => descriptor.Index(indexName));

        client.CreateIndex(descriptor => descriptor.Index(indexName).AddMapping<Document>(m => m.MapFromAttributes()));

        var percolate = client.RegisterPercolator<Document>("p1",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("test"))));

        var percolate2 = client.RegisterPercolator<Document>("p2",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("something"))));

        var percolateResponse =
            client.Percolate<Document>(descriptor => descriptor.Index(indexName).Document(new Document {Name = "this is a test"}));

        //Matches contain percolator p1 
        var percolatorIds = percolateResponse.Matches.Select(x => x.Id);

        Console.ReadKey();
    }
}

public class Document
{
    public int Id { get; set; }
    public string Name { get; set; }
}
内部类程序
{
私有静态void Main(字符串[]args)
{
var indexName=“indexName”;
var uri=新的uri(“http://localhost:9200");
var设置=新连接设置(uri)
.SetDefaultIndex(indexName)
.EnableTrace();
var客户端=新的ElasticClient(设置);
var indicatesresponse=client.DeleteIndex(descriptor=>descriptor.Index(indexName));
CreateIndex(descriptor=>descriptor.Index(indexName).AddMapping(m=>m.MapFromAttributes());
var percolate=client.RegisterPercolator(“p1”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“test”));
var percolate2=client.RegisterPercolator(“p2”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“某物”));
var Percolaters响应=
Percolate(descriptor=>descriptor.Index(indexName).Document(新文档{Name=“这是一个测试”}));
//匹配项包含percolator p1
var percolatorIds=percolateResponse.Matches.Select(x=>x.Id);
Console.ReadKey();
}
}
公共类文档
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}

此示例将解释如何处理NEST中的过滤器

internal class Program
{
    private static void Main(string[] args)
    {
        var indexName = "indexname";

        var uri = new Uri("http://localhost:9200");
        var settings = new ConnectionSettings(uri)
            .SetDefaultIndex(indexName)
            .EnableTrace();
        var client = new ElasticClient(settings);

        var indicesResponse = client.DeleteIndex(descriptor => descriptor.Index(indexName));

        client.CreateIndex(descriptor => descriptor.Index(indexName).AddMapping<Document>(m => m.MapFromAttributes()));

        var percolate = client.RegisterPercolator<Document>("p1",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("test"))));

        var percolate2 = client.RegisterPercolator<Document>("p2",
            descriptor => descriptor.Index(indexName).Query(q => q.Match(m => m.OnField(f => f.Name).Query("something"))));

        var percolateResponse =
            client.Percolate<Document>(descriptor => descriptor.Index(indexName).Document(new Document {Name = "this is a test"}));

        //Matches contain percolator p1 
        var percolatorIds = percolateResponse.Matches.Select(x => x.Id);

        Console.ReadKey();
    }
}

public class Document
{
    public int Id { get; set; }
    public string Name { get; set; }
}
内部类程序
{
私有静态void Main(字符串[]args)
{
var indexName=“indexName”;
var uri=新的uri(“http://localhost:9200");
var设置=新连接设置(uri)
.SetDefaultIndex(indexName)
.EnableTrace();
var客户端=新的ElasticClient(设置);
var indicatesresponse=client.DeleteIndex(descriptor=>descriptor.Index(indexName));
CreateIndex(descriptor=>descriptor.Index(indexName).AddMapping(m=>m.MapFromAttributes());
var percolate=client.RegisterPercolator(“p1”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“test”));
var percolate2=client.RegisterPercolator(“p2”,
descriptor=>descriptor.Index(indexName).Query(q=>q.Match(m=>m.OnField(f=>f.Name).Query(“某物”));
var Percolaters响应=
Percolate(descriptor=>descriptor.Index(indexName).Document(新文档{Name=“这是一个测试”}));
//匹配项包含percolator p1
var percolatorIds=percolateResponse.Matches.Select(x=>