Elasticsearch: строка запроса в поле

Может ли кто-нибудь сказать, правильно ли я прав, чтобы проверить, содержит ли поле заголовка элемент

curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "query_string": { 
 "query": "title:Item"
 }
 }
}'

ИЗМЕНИТЬ

У меня есть название вроде "Экономика и статистика"

Это возвращает запись

curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "query_string": { 
 "query": "title:*statistics*"
 }
 }
}'

Это ничего не возвращает

curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "query_string": { 
 "query": "title:statistics"
 }
 }
}'

Это тоже ничего не возвращает (странно)

curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "query_string": { 
 "query": "title:*Economics*"
 }
 }
}'

Док говорит:

где поле статуса содержит активное

status:active
4 ответа

you can mention a particular field in default_field
{
 "query_string" : {
 "default_field" : "content",
 "query" : "this AND that OR thus"
 }
}
if you want to specify more than one field then 
{
 "query_string" : {
 "fields" : ["content", "name"],
 "query" : "this AND that"
 }
}


Для начинающих, подобных мне, сталкиваются с проблемами с ES: будьте очень осторожны с тем, как вы сопоставляете/маркируете свои данные. "not_analyzed" не означает, что я думал, что это значило, и это привело меня к проблеме выше.


curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "match": { 
 "title": "statistics"
 }
 }
}'

Этого было бы достаточно, если вы хотите искать точные термины (не точное содержание поля). Старайтесь избегать использования подстановочных знаков, поскольку это дорого. Для поиска с долей слова в поле вам необходимо изменить отображение по мере необходимости.

Проверьте ваше сопоставление и посмотрите тип поля title. Если он не был проанализирован, повторно проиндексируйте его как проанализированный (по умолчанию).


Ваш запрос выглядит хорошо. но вы также можете достичь такого же запроса ниже.

curl -XGET "http://localhost:9200/myapp/item/_search" -d'
{
 "query": {
 "term": {
 "title": {
 "value": "Item"
 }
 }
 }
}'

Изучая материалы оптимизации запросов elasticsearch, я нашел предложение избегать использования query_string, пока это не будет необходимо. также query_string по умолчанию не кэшируется.

Справочная статья

licensed under cc by-sa 3.0 with attribution.