elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack" /> elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack" />

Java ElasticSearch-matchPhraseQuery API,用于使用多个字段进行搜索

Java ElasticSearch-matchPhraseQuery API,用于使用多个字段进行搜索,java,elasticsearch,elastic-stack,Java,elasticsearch,Elastic Stack,Am搜索具有ngram标记器的特定字段,Am使用matchPhraseQuery查询该字段(代码),该字段工作正常 现在,我想用3个字段进行搜索。我们怎样才能做到这一点 请找到我的java代码,它只搜索一个字段(代码) 请在下面查找我的映射详细信息: PUT products { "settings": { "analysis": { "analyzer": { "custom_analyzer": { "type": "custom", "tokenizer

Am搜索具有
ngram
标记器的特定字段,Am使用
matchPhraseQuery
查询该字段(代码),该字段工作正常

现在,我想用3个字段进行搜索。我们怎样才能做到这一点

请找到我的java代码,它只搜索一个字段(代码)

请在下面查找我的映射详细信息:

PUT products
{
"settings": {
"analysis": {
  "analyzer": {
    "custom_analyzer": {
      "type": "custom",
      "tokenizer": "ngram",
      "char_filter": [
        "html_strip"
      ],
      "filter": [
        "lowercase",
        "asciifolding"
      ]
    }
  }
}
},
"mappings": {
"doc": {
  "properties": {
    "code": {
      "type": "text",
       "analyzer": "custom_analyzer"
      },
      "attribute" : {
      "type" : "text",
      "analyzer" : "custom_analyzer"
      },
      "term" : {
      "type" : "text",
      "analyzer" : "custom_analyzer"
      }
    }
  }
 }
}
现在,我想对代码、属性和术语三个字段进行搜索查询

我尝试了以下java代码,但未按预期工作:

BoolQueryBuilder orQuery = QueryBuilders.boolQuery();
QueryBuilder qb1 = QueryBuilders.matchPhraseQuery("catalog_keywords", keyword);
QueryBuilder qb2 = QueryBuilders.matchPhraseQuery("product_keywords", keyword);
orQuery.should(qb1);
orQuery.should(qb2);
orQuery.minimumShouldMatch(1);
searchSourceBuilder.query(orQuery);
searchSourceBuilder.size(10);
searchRequest.source(searchSourceBuilder);
我的输入查询:

Logi
我越来越喜欢:

"Materiały, programy doborowe | Marketing | Katalogi, broszury"
这与我的问题完全无关。预期结果是,
Logiciels

我的字段的值带有分隔符
|
,因此我只需要单词/字符的精确匹配。它不应使用所有分隔符和全部进行打印。

使用:


我用java api尝试过类似的方法,但效果不太好。我用细节更新了我的问题。你知道如何在java api中形成多匹配查询吗?
"Materiały, programy doborowe | Marketing | Katalogi, broszury"
GET products/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "FIELD": "PHRASE"
          }
        },
        {
          "match_phrase": {
            "FIELD": "PHRASE"
          }
        },
        {
          "match_phrase": {
            "FIELD": "PHRASE"
          }
        }
      ]
    }
  }
}