gpt4 book ai didi

elasticsearch - 创建 ElasticSearch 查询以搜索所有字段并同时使用部分匹配

转载 作者:行者123 更新时间:2023-11-29 02:43:55 29 4
gpt4 key购买 nike

另外,我有部分搜索功能,我可以搜索所有字段。但我无法在映射所有字段的搜索中使用部分匹配。

当我使用部分匹配时,这会返回我的名字:

GET /_search?pretty=true
{
"query": {
"match": {
"FullName": "andon"
}
}
}

此搜索在所有字段上运行,但不进行部分匹配(0 次匹配):

GET /_search?pretty=true
{
"query": {
"match": {
"_all": "andon"
}
}
}

要将部分匹配与对所有字段和类型的搜索相结合,我需要做什么?我有很多字段和类型,所以我希望避免手动指定它们。

如果有任何不同,我将从连接到 SQL 的 River 中插入我的数据。

编辑:现在我的映射中有 _all 字段。这似乎没有什么区别。

PUT /contact/
{
"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "1",
"max_gram" : "10"
}
}
}
}
},
"mappings": {
"_default_": {
"_all" : {"enabled" : true},
"properties" : {
"Description":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"OfficePhone":{"type":"string","store":"yes"},
"Email":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"FullName":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"ReportsTo":{"type":"string","store":"yes"},
"Department":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"},
"Title":{"type":"string","store":"yes", "index_analyzer": "my_ngram_analyzer"}
}
}
}
}

最佳答案

_all-field通过获取所有字段的文本,将它们传递给 _all 的分析器(这是 standard 除非被覆盖),然后索引结果术语。

不会接受分析器为其他字段所做的任何术语,并将它们全部插入同一字段。

因此,您必须覆盖 _all 字段才能使用您的自定义分析器。

但是!我不认为你真的想要那样做。你会得到一个更大的索引。 _all 有时很方便,但通常最好控制在搜索时搜索哪些字段。

因此,您可能希望使用 multi_match 而不是对 _all 进行匹配 , 指定您的字段。也可以考虑copy_to如果您使用的是 1.0。

关于elasticsearch - 创建 ElasticSearch 查询以搜索所有字段并同时使用部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731881/

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