gpt4 book ai didi

elasticsearch - 优化ElasticSearch聚合搜索建议

转载 作者:行者123 更新时间:2023-12-03 00:17:13 25 4
gpt4 key购买 nike

我正在实现自动完成字段,其中建议还包含匹配文档的数量。

我只是使用带有include过滤器的术语聚合来实现此目的。因此,例如,假设用户输入“克莱斯勒”,则可能会生成以下查询:

{
"size": 0,
"query": {
"bool": {
"must": [
...
]
}
},
"aggs": {
"filtered": {
"filter": {
...
},
"aggs": {
"suggestions": {
"terms": {
"field": "prefLabel",
"include": "Chry.*",
"min_doc_count": 0
}
}
}
}
}
}

这工作正常,我能够获取所需的数据。但是,我担心这样做的优化不是很好,在对文档建立索引后可以做更多的事情。

当前,我们有以下映射:
{
...
"prefLabel":{
"type":"string",
"index":"not_analyzed"
}
}

我想知道是否要添加一个分析字段,像这样:
{
...
"prefLabel":{
"type":"string",
"index":"not_analyzed",
"copy_to":"searchLabel"
},
"searchLabel":{
"type":"string",
"analyzer":"???"
}
}

所以我的问题是:什么是最佳的索引时间分析器? (或者,这只是疯了吗?)

最佳答案

我认为edge ngram tokenizer可以加快速度:

curl -XPUT 'localhost:9200/test_ngram' -d '{
"settings" : {
"analysis" : {
"analyzer" : {
"suggester_analyzer" : {
"tokenizer" : "ngram_tokenizer"
}
},
"tokenizer" : {
"ngram_tokenizer" : {
"type" : "edgeNGram",
"min_gram" : "2",
"max_gram" : "7",
"token_chars": [ "letter", "digit" ]
}
}
}
},
"mappings": {
...
"searchLabel": {
"type": "string",
"index_analyzer": "suggster_analyzer",
"search_analyzer": "standard"
}
...
}
}'

关于elasticsearch - 优化ElasticSearch聚合搜索建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275806/

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