gpt4 book ai didi

elasticsearch - 通过Elastic Search中的匹配查询返回的分数进行范围查询

转载 作者:行者123 更新时间:2023-12-02 22:30:00 24 4
gpt4 key购买 nike

假设我有一组文件,例如:

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

现在,我想在“名称”和“城市”字段上使用N-gram分析器实现全文搜索。

之后,我只想过滤返回的结果
    "_score" :<Query Score Returned by ES>

大于1.2(可能是通过范围查询聚合方法)

然后在该属性上应用术语聚合方法:“类型”,然后使用“top_hits”聚合方法返回每个存储桶中的热门结果。
我该怎么办?

除了搜索查询返回的得分的范围查询之外,我已经能够实现所有其他功能。

最佳答案

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

对于ngram analyer,我添加了空白 token 生成器和小写过滤器

映射

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
}
}
}
}
}
}

希望这可以帮助

关于elasticsearch - 通过Elastic Search中的匹配查询返回的分数进行范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44519450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com