Elasticsearch:从分析字段的搜索结果中删除重复项
Elasticsearch: Remove duplicates from search results of analyzed fields
我的索引中有如下条目:
ID BuildingName Postalcode Type
1 ABCD 1234 1
2 ABCD 7890 1
我需要删除 'BuildingName' 字段 在搜索 中出现的重复项(不在索引处,因为您看到它们是两个不同的条目)。最后我只想看看(任何具有搜索名称的建筑物)
ID BuildingName Postalcode Type
1 ABCD 1234 1
为什么我不能按此处所述使用字段 collapsing/aggregation (Remove duplicate documents from a search in Elasticsearch) -> 因为我需要对 BuildingName 进行 n-gram 分析,并且字段折叠/聚合仅适用于未分析的字段。
有什么方法可以做到这一点?
所有帮助表示赞赏!谢谢!
向 BuildingName
字段添加一个子字段,该字段应该是 not_analyzed
或使用 keyword
之类的分析器进行分析,这不会对文本进行太多更改。当您搜索 nGram-ed 的普通 BuildingName
字段时,聚合是在未更改的子字段上执行的:
- 映射:
"mappings": {
"test": {
"properties": {
"BuildingName": {
"type": "string",
"analyzer": "my_ngram_analyzer",
"fields": {
"notAnalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
- 查询:
{
"query": {
"term": {
"BuildingName": {
"value": "ab"
}
}
},
"aggs": {
"unique": {
"terms": {
"field": "BuildingName.notAnalyzed",
"size": 10
},
"aggs": {
"sample": {
"top_hits": {
"size": 1
}
}
}
}
}
}
我的索引中有如下条目:
ID BuildingName Postalcode Type
1 ABCD 1234 1
2 ABCD 7890 1
我需要删除 'BuildingName' 字段 在搜索 中出现的重复项(不在索引处,因为您看到它们是两个不同的条目)。最后我只想看看(任何具有搜索名称的建筑物)
ID BuildingName Postalcode Type
1 ABCD 1234 1
为什么我不能按此处所述使用字段 collapsing/aggregation (Remove duplicate documents from a search in Elasticsearch) -> 因为我需要对 BuildingName 进行 n-gram 分析,并且字段折叠/聚合仅适用于未分析的字段。
有什么方法可以做到这一点? 所有帮助表示赞赏!谢谢!
向 BuildingName
字段添加一个子字段,该字段应该是 not_analyzed
或使用 keyword
之类的分析器进行分析,这不会对文本进行太多更改。当您搜索 nGram-ed 的普通 BuildingName
字段时,聚合是在未更改的子字段上执行的:
- 映射:
"mappings": {
"test": {
"properties": {
"BuildingName": {
"type": "string",
"analyzer": "my_ngram_analyzer",
"fields": {
"notAnalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
- 查询:
{
"query": {
"term": {
"BuildingName": {
"value": "ab"
}
}
},
"aggs": {
"unique": {
"terms": {
"field": "BuildingName.notAnalyzed",
"size": 10
},
"aggs": {
"sample": {
"top_hits": {
"size": 1
}
}
}
}
}
}