wartości Doc są obecnie tylko około 10-25% wolniej niż w pamięci fielddata, i pochodzą z dwóch głównych zalet:
Żyją na dysku zamiast w pamięci sterty . Pozwala to na pracę z ilościami danych pól, które normalnie byłyby zbyt duże, aby zmieścić się w pamięci w postaci . Faktycznie, twoje miejsce na sterty ($ ES_HEAP_SIZE) może teraz być ustawione na mniejszy rozmiar, co poprawia szybkość zbierania śmieci i, w konsekwencji, stabilność węzła. Wartości Doc są budowane w czasie indeksu, a nie w czasie wyszukiwania. Podczas gdy dane z pola pamięci muszą być budowane w locie w czasie wyszukiwania przez odinwertowanie indeksu odwróconego, wartości dokumentów są wstępnie zbudowane i znacznie szybsze zainicjowanie.
Kompromisem jest większy rozmiar indeksu i nieco wolniejsze dane pola dostępu . Wartości Doc są niezwykle wydajne, więc w przypadku wielu zapytań możesz nie zauważyć nawet nieco mniejszej prędkości. W połączeniu z szybsze usuwanie śmieci i poprawione czasy inicjalizacji, a Ty możesz zauważyć zysk netto.
Im więcej wolnego miejsca pamięci podręcznej systemu plików, tym lepsze wartości dokumentu wykonają. Jeśli pliki przechowujące wartości doc są rezydujące w pamięci podręcznej systemu plików, to uzyskanie dostępu do plików jest prawie równe równoważne odczytowi z pamięci RAM. Pamięć podręczna systemu plików jest zarządzana przez jądro zamiast JVM.
Wartości Doc mogą być włączone dla pól numerycznych, Data, Boolean, binarnych i Geo-punkt oraz dla not_analyzed ciągów znaków. Obecnie nie działają one z analizowanymi polami łańcucha. Wartości doc są włączone za polu odwzorowania pola, co oznacza, że można połączyć w pamięci fielddata z wartościami Doc:
używamy doc_values z logicznych, ale nie można z nich korzystać przy analizie pola.Mówią o tym, ale nie wiedzą, jaka powinna być właściwa struktura danych. Zobacz Add Support for doc values for analyzed fields.
Czy dotyczy to każdego rodzaju nieruchomości? Nawet jeśli nie używam na tym agregacji? W dokumencie twierdzą, że wartość dokumentu może ulec poprawie, szczególnie w przypadku agregacji lub sortowania. Podczas gdy wartości doc zajmują więcej miejsca na dysku twardym. – Michael
"wartość dokumentu" jest używana, gdy tylko elastyczne wyszukiwanie wymaga niepodzielonych danych (obecnie dla sortowania i agregacji). –
Czy to prawda, że nie możemy go używać w polach * boolean *? Ponieważ [the * boolean * documentation] (https://www.elastic.co/guide/en/elasticsearch/reference/2.3/boolean.html) wymienia opcję * doc_values *, aby umożliwić sortowanie. Wspomina także o tym, że jest włączone domyślnie, ale tak naprawdę nie mogłem sortować pól boolowskich. – Kamafeather