- Хотите точное совпадение строки без применения анализатора: определите тип как
keyword
, а неtext
- Массовое добавление данных:
curl -H "Content-Type:application/json" -XPUT 127.0.0.1:9200/_bulk?pretty --data-binary @movies.json
- Обработка параллелизма: используйте
if_seq_no=10
илиretry_on_conflict=5
для оптимистичного управления параллелизмом. - Выберите между нормализацией или денормализацией: нормализованные данные сводят к минимуму объем хранилища и их легко изменять. Денормализованные данные сводят к минимуму количество запросов.
- Определите родительско-дочерние отношения:
'"mappings":{ "properties":{ "film_to_franchise":{ "type":"join", "relations":{"franchise":"film"} }}}}'
6. Поиск с использованием отношений "родитель-ребенок".
'{ "query":{ "has_parent":{ "parent_type":"franchise", "query":{ "match":{ "title":"Star Wars" }}}}}' '{ "query":{ "has_child":{ "type":"film", "query":{ "match":{ "title":"The Force Awakens" }}}}}'
7. Получите состояние кластера.
curl -H "Content-Type:application/json" -XGET "http://127.0.0.1:9200/_cluster/state?pretty=true" >> es-cluster-state.json
8. Отображение разнесения и плоского типа данных: все узлы должны быть синхронизированы с обновленным состоянием кластера перед выполнением основных операций, таких как индексирование и поиск. Это может вызвать проблемы с памятью в узлах и вызвать задержку. Когда эластичный поисковый кластер дает сбой из-за слишком большого количества полей на карте, мы называем это взрывом сопоставления. Вы можете использовать "type":"flattened"
при сопоставлении, чтобы избежать добавления новых полей при сопоставлении, когда реальные данные фактически содержат новые поля.
9. Обратная сторона уплощенного типа данных: они будут обрабатываться как keyword
. Это означает, что у него ограниченные возможности поиска и анализа, ни анализатор, ни токенизатор не будут применяться к этим новым полям. Например, он не поддерживает частичное совпадение и не может найти «Bionic Beaver», если ваше совпадение - «Beaver».
10. Поддерживаемые запросы для плоского типа данных:
- термин, условия и набор условий
- приставка
- диапазон (нечисловые операции с диапазоном)
- match и multi_match (мы должны указать точные ключевые слова)
- query_string и simple_query_string
- существуют
11. Запрос против фильтра
- Фильтр: задавайте вопросы «да» или «нет», быстрее и с возможностью кеширования, завернутые в
"filter":{}
- Запрос: вернуть данные с точки зрения релевантности, заключенные в
"query":{}
- Они могут гнездиться друг в друге
12. Подберите фразу
{ "query":{ "match":{ "title":"star wars" }}}
{ "query":{ "match_phrase":{ "title":{"query":"star wars", "slop":1} }}}
13. Поиск
curl -H "Content-Type:application/json" -XGET "127.0.0.1:9200/movies/_search?q=%2Byear%3A%3E>1980+%3Btitle%3Astar%20wars&pretty"