gpt4 book ai didi

elasticsearch - ElasticSearch 5找不到包含关键字(包括空格)的文档

转载 作者:行者123 更新时间:2023-12-03 00:57:55 24 4
gpt4 key购买 nike

I / m索引文件具有以下格式:

{
"title": "this is the title",
"brand": "brand here",
"filters": ["filter1", "filter2", "Sin filters", "Camera IP"]
"active": true
}

然后查询如下:
'query': {
'function_score': {
'query': {
'bool': {
'filter': [
{
'term': {
'active': True
}
}
],
'must': [
{
'terms': {
'filters': ['camera ip']

}
}
]
}
}
}
}

我无法返回带有“摄像机IP”过滤器(或此字符串的任何变体,小写字母等)的任何文档,但是Es返回带有过滤器的文档:“正弦过滤器”。

使用以下设置创建索引。请注意,“过滤器”字段将属于默认模板,并且属于关键字类型
"settings":{
"index":{
"analysis":{
"analyzer":{
"keylower":{
"tokenizer":"keyword",
"filter":"lowercase"
}
}
}
}
},
"mappings": {

"_default_": {
"dynamic_templates": [
{
"string_as_keywords": {
"mapping": {
"index": "not_analyzed",
"type" : "keyword",
**"analyzer": "keylower"** # I also tried with and without changing this analyzer
},
"match": "*",
"match_mapping_type": "string"
}
},
{
"integers": {
"mapping": {
"type": "integer"
},
"match": "*",
"match_mapping_type": "long"
}
},
{
"floats": {
"mapping": {
"type": "float"
},
"match": "*",
"match_mapping_type": "double"
}
}
]
}
}

我缺少什么?奇怪的是,它返回带有“Sin过滤器”过滤器而不是“Camera IP”的过滤器。

谢谢。

最佳答案

似乎您希望过滤器为小写而不是标记化。我认为查询的问题是您将字符串的类型设置为“关键字”,ES不会分析这些字段,甚至不会更改大小写:

Keyword fields are only searchable by their exact value.



这就是为什么通过您的设置仍然可以通过如下查询来检索文档: {"query": {"term": {"filters": "Camera IP"}}}'

由于您希望分析器在索引之前更改文本的大小写,因此应通过将映射更改为以下内容来将类型设置为 text:
{"settings":{
"index": {
"analysis":{
"analyzer":{
"test_analyzer":{
"tokenizer":"keyword",
"filter":"lowercase"
}
}
}
}
},
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_as_keywords": {
"mapping": {
"type": "text",
"index": "not_analyzed",
"analyzer": "test_analyzer"
},
"match": "*",
"match_mapping_type": "string"
}
}
]
}
}}

关于elasticsearch - ElasticSearch 5找不到包含关键字(包括空格)的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663745/

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