2016-06-02 3 views
0

В чем разница между одиночными и двойными кавычками в синтаксисе строки запроса ElasticSearch? На всякий случай, если у меня неправильная терминология, при ссылке на синтаксис строки запроса я имею в виду синтаксис, используемый полем поиска кибаны на вкладке обнаружения.В чем разница между одиночными и двойными кавычками в синтаксисе строки запроса ElasticSearch?

У меня есть индекс с полем python_type, который не анализируется.

1) python_type: typeA находит ожидаемые документы

2) python_type: "typeA" также находит ожидаемые документы

3) python_type: 'typeA' ничего не находит.

Почему третья строка запроса не возвращает результатов? Как строка запроса интерпретирует одинарные кавычки? На интересной стороне примечание, когда поле анализируется, все три строки запроса возвращают ожидаемые результаты.

Спасибо,

Натан

ответ

1

поле ввода Kibana не ожидает данные в формате JSON, но то, что вы вводите в поле ввода должны следовать query_string query syntax.

Как вы можете видеть в этой документации, нигде нет ни одной кавычки, т. Е. Это не зарезервированный символ синтаксиса запроса.

При запросе python_type:'typeA', то query_string запрос, который Kibana посылает ES будет выглядеть примерно так:

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "query": "python_type:'typeA'", 
      "analyze_wildcard": true 
     } 
     } 
    } 
    } 
} 

Это не так, но ES будет проверять документы, имеющие python_field содержащих 'typeA', с единственным кавычки.

В то время как при запросе python_type:"typeA" или python_type:typeA ES будет проверять наличие документов, имеющих python_field с точным термином typeA

Смежные вопросы