Так как в последних версиях Elasticsearch были объявлены устаревшие несколько типов в одном индексе, я организовал свои данные через поле «doc_type» с типом «ключевое слово», что позволяет мне выполнять запросы, такие как:
curl 'localhost:9200/my_index/_search?pretty&q=doc_type:my_doc_type'
Этот запрос вернет все документы, чье поле doc_type точно равно «my_doc_type».Теперь я хотел бы получить сопоставление только для полей из этого вида запроса.
Чтобы воспроизвести ситуацию, предположим, что мы определим наше отображение индекса следующим образом:
curl -XPUT 'localhost:9200/my_index/my_type/_mapping?pretty' -H 'Content-Type: application/json' -d '{
"my_type" : {
"properties" : {
"first_name" : {"type" : "text" },
"last_name": {"type": "text"},
"doc_type": {"type": "keyword"}
}
}
}'
Теперь давайте добавим два следующих документа:
curl -XPUT 'localhost:9200/my_index/my_type/1' -H 'Content-Type: application/json' -d '{ "last_name": "Doe", "first_name": "John", "doc_type": "type_a"}'
curl -XPUT 'localhost:9200/my_index/my_type/1' -H 'Content-Type: application/json' -d '{ "first_name": "Jane", "doc_type": "type_b"}'
Я бывозможность получить сопоставление только для документов, которые соответствуют запросу q=doc_type:type_b
.В этом случае мне нужно получить сопоставление только для полей «ключевое слово» и «имя-первого».
Если это невозможно с одним запросом, я знаю, что Elasticsearch предоставляет конкретный запрос сопоставления полей, но для его использованияСначала нужно получить объединение ВСЕХ полей всех документов, соответствующих запросу q=doc_type:type_b
.Есть ли способ сделать это?