Elasticsearch Query и ElasticsearchCrudRepository Различные отображаемые результаты - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть этот запрос в asticsearch , который дает правильные результаты, как и ожидалось, но когда я пытаюсь выполнить поиск через ElasticsearchCrudRepository с использованием Springboot, он дает разные результаты в случайном порядке

Я искал на github, другие вопросы о стековом потоке, некоторые говорили, что это проблема версии, но я использую ту же версию spring-data -asticsearch, а также мойasticsearch

ElasticsearchCrudRepository Query:

@Component
public interface MedicineRepository extends ElasticsearchCrudRepository<Medicine, String> {

    @Query("{ \"function_score\" :{ \"query\":{ \"bool\": { \"must_not\": [ { \"match\": { \"status\": \"Inactive\" } }, { \"match\": { \"status\": \"Pending\" } } ], \"must\": [ { \"match\": { \"location\": \"?1\" } }, { \"bool\": { \"should\": [ { \"multi_match\": { \"query\": \"?0\", \"type\": \"best_fields\", \"fields\": [ \"name^5\", \"brand_name^3\" ], \"boost\": 1, \"fuzziness\": \"AUTO\", \"prefix_length\": 2 } }, { \"multi_match\": { \"query\": \"?0\", \"type\": \"phrase_prefix\", \"fields\": [ \"name^5\", \"brand_name^3\" ], \"boost\": 3 } }, { \"multi_match\": { \"query\": \"?0\", \"type\": \"phrase_prefix\", \"fields\": [ \"sku\" ], \"boost\": 5 } } ] } } ] } }, \"boost\": \"2\", \"functions\": [ { \"filter\": { \"match\": { \"status\": \"Active\" } }, \"weight\": 2 } ], \"max_boost\": 10, \"score_mode\": \"max\", \"boost_mode\": \"sum\", \"min_score\" : 0 } }")
    Page<Medicine> findByLocationAnd_SkuOrNameOrBrand(String query, String location, Pageable pageable);

}

Обычный запрос ElasticSearch:

{
"query" : 
    {
        "function_score" :{
            "query":{
      "bool": {
        "must_not": [
          {
            "match": {
              "status": "Inactive"
            }
          },
          {
            "match": {
              "status": "Pending"
            }
          }
        ],
        "must": [
          {
            "match": {
              "location": "Jaipur"
            }
          },
          {
            "bool": {
              "should": [
                {
                  "multi_match": {
                    "query": "crozin",
                    "type": "best_fields",
                    "fields": [
                      "name^5",
                      "brand_name^3"
                    ],
                    "boost": 1,
                    "fuzziness": "AUTO",
                    "prefix_length": 2
                  }
                },
                {
                  "multi_match": {
                    "query": "crozin",
                    "type": "phrase_prefix",
                    "fields": [
                      "name^5",
                      "brand_name^3"
                    ],
                    "boost": 3
                  }
                },
                {
                  "multi_match": {
                    "query": "crozin",
                    "type": "phrase_prefix",
                    "fields": [
                      "sku"
                    ],
                    "boost": 5
                  }
                }
              ]
            }
          }
        ]
      }
    },
      "boost": "2", 
      "functions": [
          {
              "filter": { "match": { "status": "Active" } },
              "weight": 2
          }
      ],
      "max_boost": 10,
      "score_mode": "max",
      "boost_mode": "sum",
      "min_score" : 0
  }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...