我不熟悉弹性搜索并尝试查询字符串
以下是我的疑问:
GET observations_corpus/_search
{
"query": {
"match": {
"OBSERVATION.keyword": {
"query": "RDW-CV=16.8%, WBC=9.010*3, RBC=3.2210*6",
"analyzer": "keyword_analyzer",
"operator": "or",
"fuzziness": 1
}
}
}
}
输出:
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : 6.111533,
"hits" : [
{
"_index" : "observations_corpus",
"_type" : "_doc",
"_id" : "0",
"_score" : 6.111533,
"_source" : {
"OBSERVATION" : "WBC"
}
},
{
"_index" : "observations_corpus",
"_type" : "_doc",
"_id" : "1",
"_score" : 6.111533,
"_source" : {
"OBSERVATION" : "RBC"
}
},
{
"_index" : "observations_corpus",
"_type" : "_doc",
"_id" : "7",
"_score" : 4.9527483,
"_source" : {
"OBSERVATION" : "RDW-CV"
}
}
}
在我的查询中,所需标记的顺序是“RDW-CV,WBC,RBC”,但在输出命中中,顺序更改为“WBC,RBC,RDW-CV”
我们有没有办法得到hits w.r.t输入订单? 有人能帮我吗
我要说的第一件事是Elasticsearch AFAIK中没有任何功能可以按照您想要的方式对结果进行排序。我将在下面概述一些我认为是黑客的东西,但我觉得最“合适”的解决方案是对每个搜索词运行单独的查询,并在客户端应用程序中合成Elasticsearch结果。因此,在您的示例中,将查询分为三个查询。Elasticsearch是一个分布式搜索引擎,根据您的设置,您可能有不同的服务器来处理每个组成查询,并行提交这些多个查询仍然可以为您提供良好的响应时间
也就是说,作为一种选择,这里有一个可能对你有用的黑客。黑客基本上是使用一个布尔查询,每个令牌在它自己的子句中,并使用不同的提升来优先匹配第一个令牌而不是第二个令牌,第二个令牌而不是第三个令牌。这并不能保证总是给你想要的顺序,但你可以玩助推器,并将它们设置为应该总是对你有用的东西:
相关问题 更多 >
编程相关推荐