ElasticSearch: Найдется все... и быстро!

35
ElasticSearch. ǴȇȐȋȌșȘȦ ȉȘȌ… ȏ ȈȢȘșȗȕ! ǬȉȊȌȔȏȐ ǸȕȒȕȋȑȕȉ www.infinnity.ru 8-Ȧ ȑȕȔțȌȗȌȔȝȏȦ .NET ȗȇȎȗȇȈȕșȞȏȑȕȉ т ȇȖȗȌȒȦ омнр dotnetconf.ru

description

По материалам конференции .NET разработчиков - http://dotnetconf.ru/materialy/elasticsearch

Transcript of ElasticSearch: Найдется все... и быстро!

Page 1: ElasticSearch: Найдется все... и быстро!

ElasticSearch. … !

www.infinnity.ru

8- .NET

т омнр

dotnetconf.ru

Page 2: ElasticSearch: Найдется все... и быстро!

2 ElasticSearch. … и

• “Infinnity Solutions”

• –

• – Э

Page 3: ElasticSearch: Найдется все... и быстро!

3 ElasticSearch. … и

ы

Page 4: ElasticSearch: Найдется все... и быстро!

4 ElasticSearch. … и

• хмм з смм

Page 5: ElasticSearch: Найдется все... и быстро!

5 ElasticSearch. … и

-

• и

Page 6: ElasticSearch: Найдется все... и быстро!

6 ElasticSearch. … и

• и к ы

Page 7: ElasticSearch: Найдется все... и быстро!

7 ElasticSearch. … и

• ф нм

Page 8: ElasticSearch: Найдется все... и быстро!

8 ElasticSearch. … и

Elasticsearch is a flexible and

powerful open source,

distributed, real-time search and

analytics engine

www.elasticsearch.org

Page 9: ElasticSearch: Найдется все... и быстро!

9 ElasticSearch. … и

Page 10: ElasticSearch: Найдется все... и быстро!

10 ElasticSearch. … и

ElasticSearch?

• Mongo, Cassandra, Solr

• Open-Source

Page 11: ElasticSearch: Найдется все... и быстро!

11 ElasticSearch. … и

ElasticSearch

• и

• RESTful • JSON • • • • и

• •

Page 12: ElasticSearch: Найдется все... и быстро!

12 ElasticSearch. … и

• http://ruilopes.com/elasticsearch-setup/ -windows installer

• https://github.com/mobz/elasticsearch-head • UI

• (JS + REST)

• http://www.elastichq.org

!

Page 13: ElasticSearch: Найдется все... и быстро!

13 ElasticSearch. … и

Ша д

И дек ые а лы Lucene (5 а ло )

Index

Type1

Type2

Type3

Index = DataBase

Type = Table

Document = Record

Type1 Json doc

Type2 Json doc

Type2 Json doc

Type 3 Json doc

Page 14: ElasticSearch: Найдется все... и быстро!

14 ElasticSearch. … и

REST

• Order: POST http://localhost:9200/order/

• ц • POST http://localhost:9200/order/book/

BODY:

{

"Author": "E.Evans",

"Name": "Domain driven design"

}

Page 16: ElasticSearch: Найдется все... и быстро!

16 ElasticSearch. … и

• JSON

• д е

и

• д е

д еи

• д и и

е

Page 17: ElasticSearch: Найдется все... и быстро!

17 ElasticSearch. … и

• Iу-4770 CPU 3.5GHz

16GB Windows 7 x64 • нммм к • ц ц и и и

• ц ниои фи

нтипоитр к • JSON ц { Id : 5, Code : 4E899A40-FA60-4D51-B4F9-BCF9F7FAACEC", Value : " CC305862-BA2D-409C-A662-3D589EF7011C" } •

ElasticSearch

Page 18: ElasticSearch: Найдется все... и быстро!

ROW COUNT: 1000 THREAD COUNT: 64 (8 CPUs)

TOTAL

Total time: 00:03:39.4040000 (219,40 sec)

Average time: 219,40 ms/operation

Average speed: 4,558 operation/sec

INSERT

Total time: 00:00:54.9130000 (54,91 sec)

Average time: 54,91 ms/operation

Average speed: 18,211 operation/sec

UPDATE

Total time: 00:01:05.4060000 (65,41 sec)

Average time: 65,41 ms/operation

Average speed: 15,289 operation/sec

DELETE

Total time: 00:00:34.2190000 (34,22 sec)

Average time: 34,22 ms/operation

Average speed: 29,224 operation/sec

SELECT

Total time: 00:01:04.8660000 (64,87 sec)

Average time: 64,87 ms/operation

Average speed: 15,416 operation/sec

Page 19: ElasticSearch: Найдется все... и быстро!

19 ElasticSearch. … и

д е

19

Page 20: ElasticSearch: Найдется все... и быстро!

20 ElasticSearch. … и

Cluster (Replica Factor = 1)

Search

Balancer

Node

MasterNode Data Node

Replica 1 Shard 1

Shard 2

Search

Balancer

Node

Data Node

Replica 2

DataNode

Replica 3 Shard 3

Shard 4

Shard 4

Shard 5

...

Page 21: ElasticSearch: Найдется все... и быстро!

21 ElasticSearch. … и

Production

• – 3 node, 1 replica

• 1 node • SSD • GitHub:

• 44 amazon EC2 instance • 30Tb data • 8 instances и

• 2 replica

• Stackoverflow.com (StackExchange) : • 3 ES instance / 1 replica

Page 22: ElasticSearch: Найдется все... и быстро!

22 ElasticSearch. … и

Solr vs ElasticSearch

http://blog.socialcast.com/realtime-search-solr-vs-elasticsearch/

Page 23: ElasticSearch: Найдется все... и быстро!

23 ElasticSearch. … и

.NET • ElasticSearch.NET & NEST • PlainElastic https://github.com/elasticsearch/elasticsearch-net

NEST: • и

и ElasticSearch • Fluent- и

• • и

• и и

Page 24: ElasticSearch: Найдется все... и быстро!

24 ElasticSearch. … и

1. public class Person

{

public string Id { get; set; }

public string FirstName { get; set; }

public string LastName { get; set; }

}

2. var test = new Person()

{

Id щ “123456",

LastName = " ",

FirstName = " ",

};

3. client.Index(test); // Nest

4. var items = client.Search<Person>(f => f.Filter(ff => ff.Term(i => i.LastName, " ")));

Page 25: ElasticSearch: Найдется все... и быстро!

25 ElasticSearch. … и

м

Page 26: ElasticSearch: Найдется все... и быстро!

26 ElasticSearch. … и

1. дDefault Timeout = 1 s)

2. ElasticSearch

Page 27: ElasticSearch: Найдется все... и быстро!

27 ElasticSearch. … и

1. client.Refresh()

д е 2. Analyzers &

Tokenizers

Page 28: ElasticSearch: Найдется все... и быстро!

28 ElasticSearch. … и

Analyzer

Snowball Analyzer – еал о а о для о я ыко , то ч ле у к .

Input Data

Term1

Term 2

Term 3

Page 29: ElasticSearch: Найдется все... и быстро!

29 ElasticSearch. … и

• Standard Analyzer –

client.CreateIndex(IndexObject, c => c.AddMapping<Person>(

m => m.MapFromAttributes().IndexAnalyzer("string_lowercase")));

Page 30: ElasticSearch: Найдется все... и быстро!

30 ElasticSearch. … и

ц «…\elasticsearch\config\elasticsearch.yml»

ц index:

analysis:

analyzer:

string_lowercase:

tokenizer: keyword

filter: lowercase

Page 31: ElasticSearch: Найдется все... и быстро!

31 ElasticSearch. … и

Hint

• Nest

• н щ с щ с

• н щ н и щ с

• нмм щ смм щ смм к ElasticSearch

Page 32: ElasticSearch: Найдется все... и быстро!

32 ElasticSearch. … и

!

• н щ н д

е • н

Page 33: ElasticSearch: Найдется все... и быстро!

33 ElasticSearch. … и

• ц •

• -

ES

Page 34: ElasticSearch: Найдется все... и быстро!

34 ElasticSearch. … и

• •

д е

• RESTлJSON •

ElasticSearch – …

Page 35: ElasticSearch: Найдется все... и быстро!

35 ElasticSearch. … и

www.infinnity.ru