Эластичный поиск в нижнем регистре, например% term% search

David542 спросил: 07 октября 2018 в 01:35 в: python

У меня есть следующий путь к файлу, который мне нужно сохранить в ES:

/mnt/qfs-X/Asset_Management/XG_Marketing_/Episodic-SG_1001_1233.jpg

Я хотел бы иметь возможность искать следующее и получать совпадение:

search = "qf episodic sg_1001 JPG"

И получить совпадение, другими словами, это будет поиск, подобный следующему в (моем) sql:

select * from table where fp like '%qf%' and fp like '%episodic%' 
and fp like '%sg_1001%' and fp like '%jpg%'

Два вопроса здесь:

  1. Как правильно сохранить это в моем индексе? В настоящее время у меня есть базовое (и неправильное) поле ключевого слова -

    body = {
            "mappings": {
                "_doc": {
                    "dynamic": "strict",
                    "properties": {
                        "path":        {"type": "keyword"},
                    }
                }
            }
    }
    

  1. Каков будет правильный способ поиска выше в ES? У меня есть ток -

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

0 ответов