Получить сопоставление, соответствующее конкретному запросу в Elasticsearch - PullRequest
0 голосов
/ 01 февраля 2019

Так как в последних версиях 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.Есть ли способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...