Elasticsearch 6.3.2 - как искать пароли, используя все поля в этом индексе?
- У вас есть идея для создания поискового запроса? множественный поиск + поиск слов.
{
"shop_index": {
"settings": {
"index": {
"number_of_shards": "5",
"provided_name": "shop_index",
"creation_date": "1534235625279",
"analysis": {
"filter": {
"nGram_filter": {
"token_chars": [
"letter",
"digit",
"punctuation",
"symbol"
],
"min_gram": "2",
"type": "nGram",
"max_gram": "20"
}
},
"analyzer": {
"nGram_analyzer": {
"filter": [
"lowercase",
"asciifolding",
"nGram_filter"
],
"type": "custom",
"tokenizer": "whitespace"
},
"whitespace_analyzer": {
"filter": [
"lowercase",
"asciifolding"
],
"type": "custom",
"tokenizer": "whitespace"
}
}
},
"number_of_replicas": "1",
"uuid": "SBB9u344RVGm1QQUo-rVMg",
"version": {
"created": "6030299"
}
}
}
}
}
- отображение
{
"shop_index": {
"mappings": {
"products": {
"properties": {
"html_keywords": {
"type": "text"
},
"html_title": {
"type": "text"
},
"name": {
"type": "text"
}
}
}
}
}
}
- Я хотел бы найти фразу как -> поиск "ДОМ"
- набрав -> "хо" -> покажи мне "ДОМ"
- набрав -> "хоу" -> покажи мне "ДОМ"
- набрав -> "использовать" -> показать мне "ДОМ
- набрав -> "se" -> покажи мне "ДОМ"
1 ответ
Вы можете добиться этого с помощью нечеткого запроса - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html. Также подумайте о том, чтобы объединить его с slop (насколько далеко друг от друга допускаются термины) и использовать multi_match для поиска во множестве полей.
Пример запроса:
{
"query":
{
"multi_match":
{
"fields": ["field1", "field2"],
"query": "hous",
"slop": 3,
"fuzziness": "AUTO"
}
}
}