ElasticSearch 6.4: сохраненные поля не сохраняются - PullRequest
0 голосов
/ 29 ноября 2018

В ElasticSearch 6.4 у меня есть база данных, в которой я сопоставил несколько полей и указал несколько в качестве сохраненных.Однако, когда я запускаю запрос, эти поля находятся в _source, а не в сохраненных полях.Я что-то пропустил в отображении?

Вот простой пример, который воспроизводит проблему:

PUT http://localhost:9200/testdb

затем

PUT http://localhost:9200/testdb/_mapping/_doc

с телом

{
    "properties": {
        "field1_indexed": {
            "type": "text"
        },
        "field2_not_indexed": {
            "type": "text",
            "index": false,
            "store": true
        },
        "field3_stored": {
            "type": "text",
            "store": true
        }
    }
}

PUT http://localhost:9200/testdb/_doc/1

с телом

{
    "field1_indexed": "field 1",
    "field2_not_indexed": "field 2",
    "field3_stored": "field 3"
}

теперь запрашивает http://localhost:9200/testdb/_search?_source=false и возвращает это:

{"took":1,"timed_out":false,"_shards": 
{"total":5,"successful":5,"skipped":0,"failed":0},"hits": 
{"total":1,"max_score":1.0,"hits": 
[{"_index":"testdb","_type":"_doc","_id":"1","_score":1.0}]}}

Обратите внимание, что, несмотря на «field2_not_indexed», элемент «сохраненные поля» отсутствует.и «field3_stored» явно объявляет store = true в отображении.Если я не выключу _source, все три поля будут выведены в элемент _source.

1 Ответ

0 голосов
/ 29 ноября 2018

При чтении документов при поиске выясняется, что вы должны явно указать поисковому запросу, что вы хотите сохранить поля.Таким образом, вам нужно либо указать его в URL, http://localhost:9200/testdb/_search?stored_fields=*, или в теле запроса.

{
    "stored_fields": ["*"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...