如何形成查询以查找其 ID 存在于某个列表中的所有记录,例如 [1, 3, 10]?
How to form a query to find all records whose id is present in some list, for example [1, 3, 10]?
如何在 Elasticsearch 中使用 .nest NEST 来形成如下查询:select * from tbl where tbl.id in [1, 3, 10]?或者换句话说,如何形成查询以查找其 ID 存在于某个列表中的所有记录,例如 [1, 3, 10]?
您可以使用 terms query 来实现您的 use-case,在 JSON 中它看起来像下面这样。
GET /_search
{
"query": {
"terms": {
"tbl.id": [ 1,2,4 ],
"boost": 1.0
}
}
}
您可以使用下面的 Elasticarch 查询来搜索文档 _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))
)
);
如何在 Elasticsearch 中使用 .nest NEST 来形成如下查询:select * from tbl where tbl.id in [1, 3, 10]?或者换句话说,如何形成查询以查找其 ID 存在于某个列表中的所有记录,例如 [1, 3, 10]?
您可以使用 terms query 来实现您的 use-case,在 JSON 中它看起来像下面这样。
GET /_search
{
"query": {
"terms": {
"tbl.id": [ 1,2,4 ],
"boost": 1.0
}
}
}
您可以使用下面的 Elasticarch 查询来搜索文档 _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))
)
);