ElasticSearch:从某个位置匹配字段

mklgxw1f  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(286)

“问题标签:ElasticSearch
问题_content:this is 关于stackoverflow上ElasticSearch的第一个问题
上面是ElasticSearch中存储的示例字段
我想知道“问题内容”后面是否有“ElasticSearch”这个短语。有办法吗?
例如上面的例子,答案应该是肯定的。
例如
“问题标签:ElasticSearch
问题_content:this is 我的第一个问题是关于“stackoverflow上的java”
答案应该是否定的。

utugiqy6

utugiqy61#

我建议创建两个不同的字段 question_tag 以及 question_content 而不是把所有的东西都存储在一个单独的文件中,从而使事情变得复杂。
所以你的Map看起来像这样:

PUT myindex
{
  "mappings": {
    "_doc": {
      "properties": {
        "question_tag": {
          "type": "keyword"
        },
        "question_content": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}

你可以索引你的文档。例如:

PUT myindex/_doc/1
{
  "question_tag": "elastic search",
  "question_content": "This is my first question about elastic search on stackoverflow"
}

PUT myindex/_doc/1
{
  "question_tag": "elastic search",
  "question_content": "This is my first question about Java on stackoverflow"
}

那你可以用 match_phrase 查询以获取具有特定短语的文档。

GET myindex/_search
{
   "query": {
      "match_phrase" : {
         "question_content" : "elastic search"
      }
   }
}

更多关于匹配短语的信息。

相关问题