elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python elasticsearch小写,如%term%搜索

Python elasticsearch小写,如%term%搜索,python,elasticsearch,Python,elasticsearch,我需要将以下文件路径保存到ES: /mnt/qfs-X/Asset_Management/XG_Marketing_/Episodic-SG_1001_1233.jpg 我希望能够搜索以下内容并获得匹配项: search = "qf episodic sg_1001 JPG" 并获得一个匹配,换句话说,它将是一个搜索,如mysql中的以下内容: select * from table where fp like '%qf%' and fp like '%episodic%' and fp

我需要将以下文件路径保存到ES:

/mnt/qfs-X/Asset_Management/XG_Marketing_/Episodic-SG_1001_1233.jpg
我希望能够搜索以下内容并获得匹配项:

search = "qf episodic sg_1001 JPG"
并获得一个匹配,换句话说,它将是一个搜索,如mysql中的以下内容:

select * from table where fp like '%qf%' and fp like '%episodic%' 
and fp like '%sg_1001%' and fp like '%jpg%'
这里有两个问题:

在我的索引中存储这个的正确方法是什么?当前我有一个非常基本且不正确的关键字字段-

body = {
        "mappings": {
            "_doc": {
                "dynamic": "strict",
                "properties": {
                    "path":        {"type": "keyword"},
                }
            }
        }
}
在ES中搜索上述内容的正确方法是什么?我现在有-

"query": {
  "bool": {
    "must": [
      { "match": { "fp": "qf" } },
      { "match": { "fp": "episodic" } },
      { "match": { "fp": "sg_1001" } },
      { "match": { "fp": "JPG" } }
    ]
  }
}

假设您的输入是:

/mnt/qfs-X/Asset_Management/XG_Marketing_/Episodic-SG_1001_1233.jpg
我要做的是将所有这些正斜杠和下划线转换成空格

因此,有效地说,您的输入现在看起来是

mnt qfs-X Asset_Management XG Marketing Episodic-SG 1001 1233.jpg
使用标准标记器以及下面的token_filterstandard和小写将是您最终拥有的单词列表,这些单词最终将存储在您的倒排索引中,并可以查询

mnt qfs X asset management xg marketing episodic sg 1001 1233 jpg
下面是上面的映射和查询示例:

映射 样本文件 示例查询 请记住,当您将上述查询发送到Elasticsearch时,Elasticsearch将接受输入并在那里应用查询。我建议您阅读此链接以了解更多信息,这也是为什么即使使用下面的查询字符串也会获得文档的原因

"mytext": "QFS EPISODIC SG 1001 jpg"
现在,如果您尝试使用pisodic eposodic搜索,例如下面的查询,那么搜索不会返回任何内容,因为您的反向索引不会以这种方式保存单词。对于这样的场景,我建议你们使用,这样的话,情节会被进一步创造,像情节,情节会被存储在倒排索引中

POST mysampleindex/_search
{  
   "query":{  
      "match":{  
         "mytext":"pisodic"
      }
   }
}
还要注意,我一直在使用文本,而不是关键字数据类型。
我希望这有帮助

由于您要将此字段映射为关键字,因此这将不起作用。在编制索引时,需要对路径进行分析和标记。使用路径字段的文本数据类型:当您需要对分析器进行更多控制时,请尝试:
POST mysampleindex/_search
{  
   "query":{  
      "match":{  
         "mytext":"qfs episodic sg 1001 jpg"
      }
   }
}
"mytext": "QFS EPISODIC SG 1001 jpg"
POST mysampleindex/_search
{  
   "query":{  
      "match":{  
         "mytext":"pisodic"
      }
   }
}