ElasticSearch Query是使用带有多个AND / OR运算符的查询字符串形成的。即((条件1或条件2)和(条件3或条件4或条件5)),根据条件,它为我提供了多个文件。为了获得准确的条件,我再次循环遍历所有结果文档并标记特定条件。有没有简单的方法来获得特定于文档的结果条件?
任何人都可以使用NEST API提供更好的示例吗?
答案 0 :(得分:0)
我认为您需要的是突出显示对查询产生影响的数据。 elasticsearch的高亮功能实际上标记了每个搜索结果中的文本,因此用户可以看到文档与查询匹配的原因。标记的文本将在响应中返回。
请参阅elasticsearch documentation以了解此API实际如何运作。请参阅Nest Documentation以了解如何使用Nest库实现它。
例如,使用elasticsearch api想象下面的例子:
GET /someIndex/someType/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
与Nest相同:
var result = _client.Search<someIndex>(s => s
.Query(q => q
.MatchPhrase(qs => qs
.OnField(e => e.about)
.Query("rock climbing")
)
)
.Highlight(h => h
.OnFields(f => f
.OnField(e => e.about)
)
)
);
对于每个搜索结果,响应将采用以下形式(请注意突出显示部分)
"_score": 0.23013961,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [ "sports", "music" ]
},
"highlight": {
"about": [
"I love to go <em>rock</em> <em>climbing</em>"
]
}