elasticsearch 如何将percolator查询写入嵌套程序
我在弹性搜索中有一个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" : {
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=>