2017-06-13 191 views
2

假设我有一组类似的文件: -范围查询通过匹配查询在弹性搜索返回的分数

{ 
     "Name":"Random String 1" 
     "Type":"Keyword" 
     "City":"Lousiana" 
     "Quantity":"10" 
    } 

现在我想用在球场上的N元analyazer实现全文检索名称和城市。

在那之后,我想只过滤的结果比1.2(也许范围查询聚集方法)

对特性应用于长期聚集方法后,更大的

"_score" :<Query Score Returned by ES> 

返回“键入“,然后使用”top_hits“聚合方法返回每个存储桶中的顶部结果。 我该怎么做?

我已经能够实现除搜索查询返回的分数范围查询之外的所有内容。

+0

你能告诉我们UR映射? – user3775217

+0

我给出的虚拟数据并不是我用于我的项目的确切数据,但是,下面提供的映射与您使用的类似分析器相似。我只是使用一个不同的搜索分析器,这是一个标准的analayzer –

回答

1

如果您想对文档进行有机评分,那么我可以在查询中使用min_score来筛选匹配的文档以获得分数。

为的ngram analyer我添加空白标记生成器和一个小写过滤

映象

PUT index1 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "edge_n_gram_analyzer": { 
      "tokenizer": "whitespace", 
      "filter" : ["lowercase", "ednge_gram_filter"] 
     } 
     }, 
     "filter": { 
     "ednge_gram_filter" : { 
     "type" : "NGram", 
     "min_gram" : 2, 
     "max_gram": 10 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "document_type" : { 
     "properties": { 
     "Name" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "City" : { 
      "type": "text", 
      "analyzer": "edge_n_gram_analyzer" 
     }, 
     "Type" : { 
      "type": "keyword" 
     } 
     } 
    } 
    } 
} 

指数文献

POST index1/document_type 
{ 
     "Name":"Random String 1", 
     "Type":"Keyword", 
     "City":"Lousiana", 
     "Quantity":"10" 
} 

查询

POST index1/_search 
{ 
    "min_score": 1.2, 
    "size": 0, 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "term": { 
      "Name": { 
       "value": "string" 
      } 
      } 
     }, 
     { 
      "term": { 
      "City": { 
       "value": "string" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "aggs": { 
    "type_terms": { 
     "terms": { 
     "field": "Type", 
     "size": 10 
     }, 
     "aggs": { 
     "type_term_top_hits": { 
      "top_hits": { 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

希望这有助于

+0

看到这里你把min_score作为一个静态值。所以我的观点是我不确定文档分数是什么,因此我想对它返回的分数执行范围查询。 **我可以动态获取_score并将其引用到查询中吗?** –