gpt4 book ai didi

elasticsearch - 在ElasticSearch中有条件地添加模糊性

转载 作者:行者123 更新时间:2023-12-03 01:49:02 25 4
gpt4 key购买 nike

我的所有文档中都有大约十个字段:特别是product_code,每个文档的字符串类型都是唯一的。

我有一个对_all的匹配查询,效果很好,但我想执行“模糊匹配”,同时保留搜索精确的product_code的能力

这是我尝试过的:

"query": {
"bool": {
"should": [
{
"match": {
"product_code": {
"query": searchString,
"operator": "AND"
}
}
},
{
"match": {
"_all": {
"query": searchString,
"operator": "AND"
"fuzziness": 2,
"prefix_length": 2
}
}
}
]
}
}

这种方法的问题在于,由于 product_code中包含了模糊性,因此也将其用于搜索 _all

有没有一种方法可以先对 product_code进行搜索,如果没有找到结果,请对 _all进行搜索,或者从 product_code查询中排除 _all

任何帮助是极大的赞赏。

最佳答案

是的,您可以使用以下映射从_all中排除product_code

PUT index_name
{
"settings": {
"analysis": {
"analyzer": {},
"filter": {}
}
},
"mappings": {
"type_name": {
"properties": {
"product_code": {
"type": "string",
"include_in_all": false
}
}
}
}
}

或者,您可以使用 query_string搜索,它也可以提供模糊性。

使用以下查询,该查询将查询字符串与AND运算符和模糊性设置结合使用
{
"query": {
"bool": {
"should": [{
"query_string": {
"fields": ["product_code", "other_field"],
"query": "this is my string",
"default_operator": "AND",
"fuzziness": 2,
"fuzzy_prefix_length": 2
}
}, {
"match": {
"product_code": {
"query": "this is my string",
"operator": "AND"
}
}
}]
}
}
}

希望这可以帮助

关于elasticsearch - 在ElasticSearch中有条件地添加模糊性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986323/

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