2012-05-07 19 views
8

Oglądam korzystanie z ElasticSearch lub solr dla "uwięzionych" wyników wyszukiwania. Przez uwięzienie chcę zachować oddzielne zbiory danych dla celów bezpieczeństwa, itp.Czy elastyczne wyszukiwanie ma odpowiednik "rdzeni" jak w solr?

O ile wiem, jest to możliwe dzięki zastosowaniu wielordzeniowej konfiguracji solr - czy istnieje sposób na izolację indeksów/danych w wydajnym sposób "instancji" przy użyciu ElasticSearch?

Odpowiedz

7

W ElasticSearch można oddzielać dane, indeksując je na oddzielne indeksy, a następnie ograniczając zapytanie do określonego indeksu.

Na przykład, jeśli masz dwa indeksy, 'foo' i 'bar' uruchomiony:

% curl -XGET http://localhost:9200/_search?q=*:* 

przeszuka całą gromadę, przy czym:

% curl -XGET http://localhost:9200/foo/_search?q=*:* 

wyszuka tylko „foo "indeks.

Można również oddzielne dane wg typów, jeśli utworzyć indeks „test” z następujących czynności:

% curl -XPOST http://localhost:9200/test -d '{ 
    "mappings" : { 
     "type1" : { 
      "_source" : { "enabled" : false }, 
      "properties" : { 
       "field1" : { "type" : "string", "index" : "not_analyzed" } 
      } 
     }, 
     "type2" : { 
      "_source" : { "enabled" : false }, 
      "properties" : { 
       "field1" : { "type" : "string", "index" : "not_analyzed" } 
      } 
     } 
    } 
}' 

Można wyszukiwać tylko dokumentuje „TYPE1”, określając typ z zapytaniem:

% curl -XGET http://localhost:9200/test/type1/_search?q=*:* 
+0

Powiedzmy, że miałem wielu klientów; "typ" może być ich identyfikatorem klienta/organizacji w tym kontekście? – thinice

+0

@thinice tak, można wybrać oddzielenie każdego klienta w typ. Lub, w zależności od konfiguracji i liczby klientów, możesz oddzielić każdego klienta na osobny indeks. – thnetos

+0

Brilliant - dzięki :) – thinice

Powiązane problemy