2016-02-10 6 views
0

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

{ 
    "access-event-logs_2016-02-08t00:00:00-08:00": { 
    "mappings": { 
     "session-summary": { 
     "dynamic_templates": [ 
      { 
      "long_1": { 
       "mapping": { 
       "type": "long" 
       }, 
       "match": "generation" 
      } 
      }, 
      { 
      "datetime_1": { 
       "mapping": { 
       "format": "strict_date_optional_time||epoch_millis", 
       "type": "date" 
       }, 
       "match": "*DateTime" 
      } 
      }, 
      { 
      "string_1": { 
       "mapping": { 
       "index": "not_analyzed", 
       "type": "string" 
       }, 
       "match": "*" 
      } 
      } 
     ], 
     "properties": { 
      "Access_Policy_Result": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Bytes_In": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Bytes_Out": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Client_IP": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Client_Platform": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Continent": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Country": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Partition": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Reputation": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "State": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "User_Name": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "Virtual_IP": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "accessProfile": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "active": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "badIpReputation": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "clusterName": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "duration": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "eventConversionDateTime": { 
      "type": "date", 
      "format": "strict_date_optional_time||epoch_millis" 
      }, 
      "generation": { 
      "type": "long" 
      }, 
      "hostname": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "lastUpdateMicros": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "sessionDuration": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "sessionKey": { 
      "type": "string", 
      "index": "not_analyzed", 
      "include_in_all": false 
      }, 
      "sessionTerminationDateTime": { 
      "type": "date", 
      "format": "strict_date_optional_time||epoch_millis" 
      }, 
      "session_id": { 
      "type": "string", 
      "index": "not_analyzed" 
      }, 
      "unique_id": { 
      "type": "string", 
      "index": "not_analyzed", 
      "include_in_all": false 
      }, 
      "virtualServer": { 
      "type": "string", 
      "index": "not_analyzed" 
      } 
     } 
     } 
    } 
    } 
} 

Этот запрос возвращает результаты, но если я ищу с Common вместо (общий), результаты не возвращаются. Мне нужно, чтобы указать любой анализатор выполнять поиск без учета регистра

{ 
     "query":{ 
     "filtered":{ 
      "filter":{ 
       "bool":{ 
        "must":[ 
        { 
         "range":{ 
          "eventConversionDateTime":{ 
           "gte":"2015-10-30T02:50:39.237Z", 
           "lte":"2015-12-31T02:50:38.237Z" 
          } 
         } 
        } 
         { 
         "prefix":{ 
           "_all":"common" 

         } 
        } 
        ] 
       } 
      } 
     } 
     } 

ответ

1

Посмотрите на свой документ, iirc ES закроет все, указав документ. Также используйте совпадающие запросы на нем, чтобы позаботиться об обручах, необходимых для соответствия.

0

отсылая документ ES ли, это ясно говорит: «Спичка документов, которые имеют поле, содержащие термины с указанным префиксом (не анализировались) Карта Префикса запроса. для Lucene PrefixQuery. "

Префиксный запрос - это неаналитический поисковый запрос.

0

Лучший подход к решению вашей проблемы. Индексируйте весь свой документ в нижнем регистре, а также передайте текст поиска в нижнем регистре. Как и в поиске в поиске, поисковые тексты чувствительны к регистру. Если вы не хотите делать выше шаг, вы можете настроить собственный анализатор для своего индекса, который будет генерировать все условия в нижнем регистре. Пожалуйста, обратитесь к следующему документу https://www.elastic.co/guide/en/elasticsearch/reference/2.2/analysis-lowercase-tokenfilter.html

-2

Ответ на вопрос. Ничего не анализируется, ни индексированные данные, ни запрос.

Это означает, что общий отдых является общим, а Common остается общим, поэтому они не совпадают.

Если он был проанализирован, распространен или распространен, если индексирован как обычный и запрос обычный или общий, если он изменен, а также общий.

И, наконец, общий, если он совпадает с общим.

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