Привет всем!
В этой статье вы найдете ответы о том, что такое Пес? и как / где мы можем это использовать? , Итак, давайте углубимся в первый вопрос. Pes — это подключаемый модуль впечатляющих эластичных запросов DSL для Elasticsearch (es). Он нацелен на то, чтобы быть частью новых инструментов мониторинга / контроля или уже существующих. Таким образом, в отсутствие конструирования встроенных запросов в es сложность написания DSL-запроса может быть сведена к минимуму в свете этого расширения. Pes в основном помогает в создании экономящих время запросов относительно имеющейся группы псевдонимов, так что даже если вам нужно делать сложные и сложные запросы, Pes предоставляет вам полностью контролируемый язык запросов для повышения эффективности ваших запросов.
Как уже упоминалось, Pes поддерживает несколько сокращений. Когда эти удобные выражения находятся в действии с несколькими пунктуациями, Pes создает соответствующие блоки структурированных запросов вместе с парами, которые предоставляет эластичный поиск. Кроме того, Pes содержит две функции для обработки вывода как string
или array
.
Как это работает
Это расширение может быть интегрировано в любой веб-редактор, который позволяет нам создавать запросы. Чтобы сделать это возможным, вы можете получить его cloning
:
$ git clone https://github.com/kodcu/pes
или используя bower
:
$ bower install pes
В любом случае есть двоякое: во-первых, вы получаете исходный код, во-вторых, вы можете легко протестировать все доступные выражения после установки тестовой зависимости, называемой через среду QUnitbower install
.
После связывания библиотеки ( pes.js
или pes.pack.js
) на веб-странице вы можете использовать две существующие функции, а именно, queriesToArray
и queriesToString
управлять выходными данными:
<script src="/path/to/pes.pack.js"></script>
or
<script src="/path/to/pes.js"></script>
..
<script>
var outputStr = pes.queriesToString('q[m]');
var outputArray = pes.queriesToArray('q[mpp]'));
console.log(outputStr);
console.log(outputArray);
</script>
Два консольных журнала возвращаются следующим образом:
"query": {
"match": {
"FIELD": "TEXT"
}
}
["\"query\": {",
" \"match_phrase_prefix\": {",
" \"FIELD\": \"TEXT\"",
" }",
"}"]
Примеры
Pes включает query
(abbr. q
), match
( m
), match_phrase
( mp
), match_phrase_prefix
( mpp
), match_all
( ma
), multi_match
( mm
), dis_max
( dm
), bool
( b
, bool
) И range
( range
) запросы на данный момент. Для получения более подробной информации, пожалуйста, посмотрите на тестовые случаи, расположенные в папке тестов. Это действительно полезно, чтобы переварить все существующие выражения, которые предоставляет Pes.
Вложенные блоки запроса вместе с парами ключ: значение могут быть легко созданы в одну строку. Что важно отметить , что вы можете переопределить значения по умолчанию элементов , таких как size
, explain
, _source
, zero_terms_query
, operator
и тому подобное, с использованием key{new_value}
синтаксиса. new_value
может быть строка, число, массив, правда, ложь, или нуль. Вы увидите это поведение в 3-м и 4-м примерах.
Рядом с этим, если вы хотите использовать более одного типа в с match
( m
псевдоним) и match_phrase_prefix
( mpp
псевдоним) запросов , а не использовать их поведение по умолчанию, :p
вступает в игру , чтобы обеспечить вложенные типы , как m:p[qy]
, mpp:p[qy,op,me]
. Они будут сгенерированы следующим образом:
"match": {
"FIELD": {
"query": "TEXT"
}
}
"match_phrase_prefix": {
"FIELD": {
"query": "TEXT",
"operator": "and",
"max_expansions": 10
}
}
// rather the default characteristics of the two queries ([m | mpp]):
"match": {
"FIELD": "TEXT"
}
"match_phrase_prefix": {
"FIELD": "TEXT"
}
Обратите внимание, что [o] и [a] могут использоваться для создания пустого объекта и массива соответственно. 2-й и 3-й примеры иллюстрируют, как использовать [o] при написании запроса pes.
1. Пример
{
q[mpp:p[query]]
}
{
"query": {
"match_phrase_prefix": {
"FIELD": {
"query": "TEXT"
}
}
}
}
2. Пример
{
q[b[shouldN[o[m],o[m]]]]
}
{
"query": {
"bool": {
"should": [
{
"match": {
"FIELD": "TEXT"
}
},
{
"match": {
"FIELD": "TEXT"
}
}
]
}
}
}
3. Пример
{
q[bool[mustN[o[range[gte{1}]]],shouldN[o[range[gt{1955}]]]]]
}
{
"query": {
"bool": {
"must": [
{
"range": {
"FIELD": {
"gte": 1
}
}
}
],
"should": [
{
"range": {
"FIELD": {
"gt": 1955
}
}
}
]
}
}
}
4. Пример
{
q[m:p[qy{"hi elastic query"},op{"or"},ztq]],sz,bst,src{["_id","surname"]},exp{true}
}
{
"query": {
"match": {
"FIELD": {
"query": "hi elastic query",
"operator": "or",
"zero_terms_query": "none"
}
}
},
"size": 10,
"boost": 1,
"_source": [
"_id",
"surname"
],
"explain": true
}