如何形成一个查询来查找id存在于某个列表中的所有记录,例如[1,3,10]?



如何在Elasticsearch中使用。NEST来形成这样的查询:select * from tbl where tbl。Id in [1,3,10] ?或者换句话说,如何形成一个查询来查找id出现在某个列表中的所有记录,例如[1,3,10]?

您可以使用下面的ElasticSearch查询来搜索文档_id字段。

POST index1/_search
{
"query": {
"ids": {
"values": ["1","2","3"]
}
}
}

下面是等效的。net代码。

var ids = new long[] { 1, 2, 3 };
var multiGetResponse = client.Search<MyDocument>(s => s
.Index("index1")
.Query(q => q
.Ids(i => i
.Values(ids)
)
)
);

如果你在ElasticSearch文档的单独字段中存储id,那么你可以使用下面的查询:

POST index1/_search
{
"query": {
"terms": {
"id": ["1","2","3"]
}
}
}

下面是等效的。net代码。

client.Search<MyDocument>(s => s
.Index("index1")
.Query(q => q      
.Terms(t => t.Field(f => f.Name).Terms(ids))      
)
);

您可以使用术语查询来实现您的用例,在JSON中它看起来如下:

GET /_search
{
"query": {
"terms": {
"tbl.id": [ 1,2,4 ],
"boost": 1.0
}
}
}

相关内容

最新更新