2014-11-04 5 views
0

Поиск не возвращает результатов, хотя у меня есть документ, который должен соответствовать запросу.Невозможно найти поле типа вложения в индексированном документе ElasticSearch

У меня есть модуль плагинов-адаптеров ElasticSearch, установленный на https://github.com/elasticsearch/elasticsearch-mapper-attachments. Я также искал тему, а также просмотрел похожие вопросы в переполнении стека, но не нашел ответа.

Вот что я напечатал в Windows 7 командной строки:

c:\Java\elasticsearch-1.3.4>curl -XDELETE localhost:9200/tce 
{"acknowledged":true} 

c:\Java\elasticsearch-1.3.4>curl -XPUT localhost:9200/tce 
{"acknowledged":true} 

c:\Java\elasticsearch-1.3.4>curl -XPUT localhost:9200/tce/contact/_mapping -d{\" 
contact\":{\"properties\":{\"my_attachment\":{\"type\":\"attachment\"}}}} 
{"acknowledged":true} 

c:\Java\elasticsearch-1.3.4>curl -XPUT localhost:9200/tce/contact/1 -d{\"my_atta 
chment\":\"SGVsbG8=\"} 
{"_index":"tce","_type":"contact","_id":"1","_version":1,"created":true} 

c:\Java\elasticsearch-1.3.4>curl localhost:9200/tce/contact/_search?pretty 
{ 
    "took" : 2, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "tce", 
     "_type" : "contact", 
     "_id" : "1", 
     "_score" : 1.0, 
     "_source":{"my_attachment":"SGVsbG8="} 
    } ] 
    } 
} 

c:\Java\elasticsearch-1.3.4>curl localhost:9200/tce/contact/_search?pretty -d{\" 
query\":{\"term\":{\"my_attachment\":\"Hello\"}}} 
{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
    } 
} 

Обратите внимание, что base64 закодированное значение «Hello» является «SGVsbG8 =», что значение, которое я вставил в «my_attachment» поле документа.

Я предполагаю, что плагин map-attachments был развернут правильно, потому что я не получаю ошибку, выполняющую команду сопоставления выше.

Любая помощь была бы принята с благодарностью.

ответ

0

Какой анализатор работает против поля my_attachment?

Если это стандартный анализатор (не отображается ни один из них), то текст Hello в тексте будет содержать строчные буквы в индексе.

т.е. при выполнении поиска (термин, который не имеет анализатор на нем) - попробуйте найти hello

curl localhost:9200/tce/contact/_search?pretty -d' 
    {"query": 
     {"term": 
     {"my_attachment":"hello" 
     }}}' 

вы также можете увидеть, какие условия были добавлены в индекс:

curl 'http://localhost:9200/tce/contact/_search?pretty=true' -d '{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "script_fields": { 
     "terms" : { 
     "script": "doc[field].values", 
     "params": { 
      "field": "my_attachment" 
     } 
     } 
    } 
}' 
+0

Я предполагаю, что это анализатор по умолчанию, потому что я не внес никаких изменений в конфигурацию. Я также попытался выполнить поиск с помощью «привет», но не повезло - все равно не возвращает никаких результатов. – zorbathegeek

+0

Чувствуется, что проблема связана с полем типа вложения. Я добавил еще один документ с двумя свойствами со строковыми значениями, и выполнение поиска по ним возвращает ожидаемые результаты. локон -XPUT HTTP: // локальный: 9200/у.т./контакт/3 -d '{ " ПгвЬЫате ":" Джон", "LastName": "Doe"}' локон локальный: 9200/у.т./контакт/_search? pretty -d {"query": {"term": {"firstName": "john"}}} Возвращает один документ, как ожидалось (ответ сокращенно): ... "hits": { " всего»: 1, ... "хиты": [{ "_ID": "3", "_SCORE": 0,30685282, "_source": { "Имя": "Джон", "LastName": «Doe»} }] – zorbathegeek

+0

Оказывается, это была проблема с установкой плагина. Удалена предыдущая установка и переустановка. Сгенерированный индекс с использованием вышеуказанных шагов и поиск вернули правильный набор результатов. Несмотря на это, предложение попробовать все ключевые слова нижнего регистра по-прежнему полезно. Принимая ответ. Благодаря! – zorbathegeek