2015-09-01 13 views
8

Zastrzeżenia dokumentów:Jakie są wady ElasticSearch Doc Wartości

10–25% slower than in-memory fielddata 

i

It is possible that doc values will become the default format in the near future 

Poza tym nieznacznego obniżenia prędkości, jakie są wady korzystania wartości DOC wszystkie właściwości ?

Dzięki!

Odpowiedz

10

Tendencja polega na używaniu doc_values, gdy tylko jest to możliwe, ponieważ są one coraz bardziej wydajne niż dane terenowe (zwłaszcza od wersji ES 1.4). Jednym z wad jest na razie to, że nie można ich używać z analizowanymi polami łańcucha i polami boolowskimi. Kolejną wadą jest to, że nadal używasz faset, tak lub nie. Kibana 3, ponieważ oba nie używają wartości doc, ale możesz albo migrować do agregacji, albo resp. uaktualnij do Kibana 4, więc to naprawdę nie jest problem.

Sprawdź to excellent blog post autorstwa Chris Earle, który wyjaśnia tajniki wartości doc i fielddata.

+0

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

+0

"wartość dokumentu" jest używana, gdy tylko elastyczne wyszukiwanie wymaga niepodzielonych danych (obecnie dla sortowania i agregacji). –

+0

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

2

Od Elasticsearch The Definitive Guide [1.x]

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:

PUT /music/_mapping/song 
{ 
    "properties" : { 
    "tag": { 
     "type":  "string", 
     "index" :  "not_analyzed", 
     "doc_values": true 
    } 
    } 
} 

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.

Powiązane problemy