<commit_before>#### {% title "Elasticsearch w przykładach" %}

Zapisujemy kilka dokumentów w ElasticSearch:

    :::bash
    curl -X DELETE 'localhost:9200/aphorisms'
    curl -X POST   'localhost:9200/aphorisms/_bulk' --data-binary @test.bulk
    curl -X POST   'localhost:9200/_refresh'

Dane (**uwaga:* każdy JSON wpisujemy w jednym wierszu):

    :::json test.bulk
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Idioci i geniusze są wolni od obowiązku rozumienia dowcipów.",
      "tags": ["ludzie", "dowcipy", "człowiek"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Unikaj skarżącego się na brak czasu, chce ci zabrać twój. ",
      "tags": ["ludzie", "czas", "człowiek"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Ludzie myślą, mówią i robią to, czego nie wolno robić, o czym nie wolno mówić ani myśleć.",
      "tags": ["ludzie", "myślenie"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Między duchem a materią pośredniczy matematyka.",
      "tags": ["materia", "duch", "matematyka"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Mężczyźni wolą kobiety ładne niż mądre, ponieważ łatwiej im przychodzi patrzenie niż myślenie.",
      "tags": ["ludzie", "kobiety", "mężczyźni"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Podrzuć własne marzenia swoim wrogom, może zginą przy ich realizacji.",
      "tags": ["ludzie", "myślenie", "marzenia"] }
    { "index": { "_type" : "lec" } }
    { "quote": "By dojść do źródła, trzeba płynąć pod prąd.",
      "tags": ["źródło"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Chociaż krowie dasz kakao, nie wydoisz czekolady.",
      "tags": ["zwierzęta", "krowa", "doić"] }


## Wyszukiwanie

[Search API](http://www.elasticsearch.org/guide/reference/api/search/):
„The query can either be provided using a simple query string as a
parameter, or using a request body.”

Przeszukaj wszystkie dokumenty, zwróć cztery:

    :::bash
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      {
        "size": 4,
        "sort": { "_score": {}  },
        "query" : { "query_string" : {"query" : "do*"} }
      }'

Tylko jedno pole:

    :::bash
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "query" : { "query_string" : {"query" : "quote:do*"} } }'
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "query" : { "query_string" : {"query" : "tags:do*"} } }'
    curl "localhost:9200/aphorisms/_search?fields=quote&pretty=true" -d '
      { "query" : { "query_string" : {"query" : "tags:do*"} } }'
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "fields": ["quote"],
        "query" : { "query_string" : {"query" : "tags:do*"} } }'


## Fasety

Terms facet:

    :::bash
    curl -X POST "http://localhost:9200/aphorisms/_search?pretty=true" -d '
      {
        "fields": [],
        "query" : { "query_string" : {"query" : "*"} },
        "facets" : {
          "keywords" : { "terms" : {"field" : "tags", "size": 4} }
        }
      }'<commit_msg>więcej: Elasticsearch by Example<commit_after>#### {% title "Elasticsearch w przykładach" %}

Zapisujemy kilka dokumentów w ElasticSearch:

    :::bash
    curl -X DELETE 'localhost:9200/aphorisms'
    curl -X POST   'localhost:9200/aphorisms/_bulk' --data-binary @aphorisms.bulk
    curl -X POST   'localhost:9200/_refresh'

Dane (**uwaga:* każdy JSON wpisujemy w jednym wierszu):

    :::json test.bulk
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Idioci i geniusze są wolni od obowiązku rozumienia dowcipów.",
      "tags": ["ludzie", "dowcipy", "człowiek"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Unikaj skarżącego się na brak czasu, chce ci zabrać twój. ",
      "tags": ["ludzie", "czas", "człowiek"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Ludzie myślą, mówią i robią to, czego nie wolno robić, o czym nie wolno mówić ani myśleć.",
      "tags": ["ludzie", "myślenie"] }
    { "index": { "_type" : "steinhaus" } }
    { "quote": "Między duchem a materią pośredniczy matematyka.",
      "tags": ["materia", "duch", "matematyka"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Mężczyźni wolą kobiety ładne niż mądre, ponieważ łatwiej im przychodzi patrzenie niż myślenie.",
      "tags": ["ludzie", "kobiety", "mężczyźni"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Podrzuć własne marzenia swoim wrogom, może zginą przy ich realizacji.",
      "tags": ["ludzie", "myślenie", "marzenia"] }
    { "index": { "_type" : "lec" } }
    { "quote": "By dojść do źródła, trzeba płynąć pod prąd.",
      "tags": ["źródło"] }
    { "index": { "_type" : "lec" } }
    { "quote": "Chociaż krowie dasz kakao, nie wydoisz czekolady.",
      "tags": ["zwierzęta", "krowa", "doić"] }


## Wyszukiwanie

[Search API](http://www.elasticsearch.org/guide/reference/api/search/):
„The query can either be provided using a simple query string as a
parameter, or using a request body.”

Przeszukaj wszystkie dokumenty, zwróć cztery:

    :::bash
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      {
        "size": 4,
        "sort": { "_score": {}  },
        "query" : { "query_string" : {"query" : "do*"} }
      }'

Tylko jedno pole:

    :::bash
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "query" : { "query_string" : {"query" : "quote:do*"} } }'
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "query" : { "query_string" : {"query" : "tags:do*"} } }'
    curl "localhost:9200/aphorisms/_search?fields=quote&pretty=true" -d '
      { "query" : { "query_string" : {"query" : "tags:do*"} } }'
    curl "localhost:9200/aphorisms/_search?pretty=true" -d '
      { "fields": ["quote"],
        "query" : { "query_string" : {"query" : "tags:do*"} } }'


## Wyszukiwanie tylko w subdocuments

Przykładowe dokumenty:

    :::bash
    curl    -X DELETE 'localhost:9200/contacts'
    curl -s -X POST   'localhost:9200/contacts/_bulk' --data-binary @contacts.bulk
    curl    -X POST   'localhost:9200/_refresh'

Dane:

    :::json contacts.bulk
    { "index": { "_type" : "private" } }
    { "created_at": "1965-03-01", "name": { "last": "Grabczyk",  "first": "Agata" }  }
    { "index": { "_type" : "private" } }
    { "created_at": "1966-03-10", "name": { "last": "Korolczyk", "first": "Bartek" }  }
    { "index": { "_type" : "private" } }
    { "created_at": "1966-03-20", "name": { "last": "Maciejak",  "first": "Adam" }  }
    { "index": { "_type" : "private" } }
    { "created_at": "1965-03-01", "name": { "last": "Jaworska",  "first": "Basia" }  }

Przykładowe zapytanie [Filed Query](http://www.elasticsearch.org/guide/reference/query-dsl/field-query.html):

    :::bash
    curl "localhost:9200/contacts/_search?pretty=true" -d '
      { "query": {"field" : { "name.first" : {"query" : "A*"} } } }'

Range Query?


## Fasety

Terms facet:

    :::bash
    curl -X POST "http://localhost:9200/aphorisms/_search?pretty=true" -d '
      {
        "fields": [],
        "query" : { "query_string" : {"query" : "*"} },
        "facets" : {
          "keywords" : { "terms" : {"field" : "tags", "size": 4} }
        }
      }'
{'fraction_non_alphanumeric': 0.19680555555555557, 'fraction_numerical': 0.017222222222222222, 'mean_word_length': 3.0914772727272726, 'pattern_counts': {'":': 81, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6422883', 'n_tokens_mistral': 2958, 'n_tokens_neox': 2906, 'n_words': 621}