Elasticsearch 5.x全文正则表达式

时间:2017-03-20 12:58:53

标签: elasticsearch

ELK新手,尝试使用正则表达式进行全文搜索,我创建了一个测试指标

  {"test_monitoring":
    {"aliases":{}
    ,"mappings":
      {"messagerie":
        {"properties":
          {"header":
            {"type":"text"
             ,"fields":
              {"keyword":
                {"type":"keyword","ignore_above":256
     } } } } } }
    ,"settings":
      { "index":
        { "creation_date":"1490005518469","number_of_shards":"5","number_of_replicas":"1","uuid":"f8AsV6OrQEqx7_-HoEYxwA","version":
          { "created":"5020299"}
        ,"provided_name":"test_monitoring"
  } } } }

所以属性“标题”是:

  • 文本
  • 关键字

允许正常的全文搜索,而不仅仅是带分数的标记

将1条记录放入(get之后的数据)

hits|total                      | 1
    |max_score                  | 1.0
    |0|_index                   | "test_monitoring"
    | |_type                    | "messagerie"
    | |_id                      | "1"
    | |_score                   | 1.0
    | |_source|header           | "La pomme d adan n est pas utile a la mastication"

我可以通过以下方式成功搜索:

"query": { "match": {
      "header" : "pomme"
      }    }

"header.keywork" : "La pomme d adan n est pas utile a la mastication"

但是从来没有一个超过1个单词的正则表达式[没有错误,完整的_shard,...](对于header.keyword是好的,但是标题是“not_analyzed”理解新的ELK版本New text/string/keyword behavior < / p>

GET /test_monitoring/messagerie/_search
{  "query":  {
        "regexp" :{
            "header" : "la.*pom*e"
}   }   }   }

我看到很多关于全文的问题,表明“not_analyzed”似乎是全文的关键所以我尝试添加这种类型的映射强制 not_analyzed 文本属性

PUT /test_monitoring/messagerie/_mapping
{
"messagerie": {
  "properties": {
    "header": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
          }
        , "as_text_na" : {
          "type" : "text"
          , "index" : "not_analyzed"
          }
        }
      }
    }
  }
}

但是在这个指数上的这个新条目也失败了

根本问题是:

对属性 header 的全文regexp查询缺少什么,允许查询mulmti字数据值,其中word的顺序很重要?没有单词的顺序,布尔查询应该足够,但很重要但是有效。

0 个答案:

没有答案