gpt4 book ai didi

python-2.7 - ElasticSearch:使用Simple_Query_String忽略多个对象进行过滤

转载 作者:行者123 更新时间:2023-12-03 02:27:36 26 4
gpt4 key购买 nike

我正在尝试构造带有两个过滤器的查询。一个可以包含一个项目或一个项目列表,而另一个只能包含一个项目。当我运行此组合筛选器时,似乎该筛选器只是被忽略,并且在其他列上返回最佳匹配。我正在将ElasticSearch 6.8与Python Flask一起使用。

动物列表可能看起来像[{“match”:{“animal_species”:“hippo”}}]],或
[{“match”:{“animal_species”:“lopear”}},{“match”:{“animal_species”:“Rex”}}]]

animal_type看起来像{“match”:{“animal_type”:“哺乳动物”}}或{“match”:{“animal_type”:“Bird”}}

感觉到animal_type匹配有问题,因为我以前只有种类过滤器,而且效果很好。

body={
'from': (page) * per_page,
'size': per_page,
'query':{
'bool':{
'filter':
{
'bool':{
'must':{
'match':{'animal_type':a_type}},
'should':animallist
}
},
'must':{
'simple_query_string':{
'query':query,
'default_operator': 'AND',
'fields': ['*']
}
}
}
}
}

我的 map 看起来像这样
{
"animal_files":{
"aliases":{

},
"mappings":{
"properties":{
"animal_type":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"animal_species":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"filepath":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"text":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"case_title":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"case_number":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}

最佳答案

我找到了答案。我将animal_type的匹配项更改为match_phrase。阅读后,我认为分析器正在标记匹配查询中的每个字母。

关于python-2.7 - ElasticSearch:使用Simple_Query_String忽略多个对象进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60744185/

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