如何匹配Elasticsearch中以短语开头的字段

时间:2016-04-06 20:19:13

标签: elasticsearch

假设我有一个已分析的字段,如果该字段以提供的短语开头,我想进行与该字段匹配的搜索。例如,假设我有两个文档,每个文档都有一个字段:

doc1 : {
    name: "the dog is happy"
}

doc2: {
    name: "happy the dog is"
}

说我的查询字符串是“狗是”。我想匹配doc1而不是doc2。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您使用特殊令牌标记文档中每个句子的开头,则可以执行phrase matching query

因此,如果您将文档编入索引

doc1 : {
    name: "START the dog is happy"
}

doc2: {
    name: "START happy the dog is"
}

您可以使用此查询获得所需的结果:

POST /test/test/_search
{
  "query": {
    "match_phrase": {
      "name": "START the dog is"
    }
  }
}

答案 1 :(得分:-1)

duration


加速前缀查询 您可以使用index_prefixes映射参数来加速前缀查询。如果启用,Elasticsearch会在一个单独的字段中索引2到5个字符之间的前缀。这样,Elasticsearch可以以更大的索引为代价更有效地运行前缀查询。