Я пытаюсь изучить Elasticsearch и использую Kibana для визуализации вещей.Я не могу понять, что не так с моим отображением и запросами.
Я пытаюсь сохранить метаданные фотографии (данные iptc).И у меня есть следующее сопоставление для него:
{
"settings": {
"index": {
"analysis": {
"filter": {},
"analyzer": {
"keyword_analyzer": {
"filter": [
"lowercase",
"asciifolding",
"trim"
],
"char_filter": [],
"type": "custom",
"tokenizer": "keyword"
},
"edge_ngram_analyzer": {
"filter": [
"lowercase"
],
"tokenizer": "edge_ngram_tokenizer"
},
"edge_ngram_search_analyzer": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"edge_ngram_tokenizer": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 5,
"token_chars": [
"letter"
]
}
}
}
}
},
"mappings": {
"doc": {
"properties": {
"photo_added": {
"type": "date",
"index": true,
"format": "yyyy-MM-dd' 'H:m:s"
},
"photo_id": {
"type": "long",
"index": true
},
"photo_owner": {
"type": "long",
"index": true
},
"project": {
"type": "long",
"index": true
},
"iptc": {
"type": "nested",
"properties": {
"caption/abstract": {
"type": "text",
"index": true
},
"copyright notice": {
"type": "text",
"index": true
},
"keywords": {
"type": "text",
"index": true,
"fields": {
"keywordstring": {
"type": "text",
"analyzer": "keyword_analyzer"
},
"edgengram": {
"type": "text",
"analyzer": "edge_ngram_analyzer",
"search_analyzer": "edge_ngram_search_analyzer"
},
"completion": {
"type": "completion"
},
"keyword": {
"type": "keyword"
}
}
},
"object name": {
"type": "text",
"index": true
},
"province/state": {
"type": "text",
"index": true
},
"sub-location": {
"type": "text",
"index": true
},
"time created": {
"type": "text",
"index": true
},
"urgency": {
"type": "text",
"index": true
},
"writer/editor": {
"type": "text",
"index": true
}
}
}
}
}
}
}
Дело в том, что я хочу запрос, который ищет по ключевым словам и подпись для существования текста поиска.Всякий раз, когда текст поиска находится в ключевых словах, оценка увеличивается, потому что это указывает на то, что фотография имеет более высокое значение.Поэтому я сформулировал следующий запрос (где значением является текст поиска):
GET /photos/_search
{
"query": {
"dis_max": {
"queries": [
{
"fuzzy": {
"iptc.keywords": {
"value": "value",
"fuzziness": 1,
"boost": 1
}
}
},
{
"fuzzy": {
"iptc.caption/abstract": {
"value": "value",
"fuzziness": 1
}
}
}
]
}
}
}
Однако, похоже, он не находит совпадений, несмотря на то, что значение есть в документах ... И я не могуКажется, создается простой запрос на совпадение, который будет сопоставляться с точным текстом ... например:
GET /photos/doc/_search?error_trace=true
{
"query": {
"match": {
"iptc.caption/abstract": "exact value from one of the documents"
}
}
}
Вернет 0 результатов ... Однако текст поиска точно находится в документе.не знаю что делать знаю.Что еще хуже (для меня, так как я почти лысый, из-за разочарования, которое вызывает у меня) Кибана, кажется, действует ... Я почти уверен, что это что-то действительно простое (дата документа в течение 5 лет), но когдафильтруя точное значение вставленной копии, он возвращает 0 результатов ... как показано на скриншоте ...

Я схожу с ума здесь.Кто-то знает, как это исправить или что, черт возьми, я делаю неправильно?