Elasticsearch Nest를 사용하여 C #에서 JObject의 속성을 동적으로 매핑하는 방법

Vlayk

Nest를 사용하여 C #의 JObject 내부 속성을 동적으로 매핑하고 싶습니다. 목표는 개체의 모든 문자열 필드를 SearchAsYouType으로 매핑하는 것입니다. 작동하지 않는 세 가지 방법에 대해 생각했습니다.

  1. AutoMap을 사용하고 C # 클래스에서 직접 속성 선언
public class Forfait
    {
        public long Id { get; set; }
        [SearchAsYouType()] 
        public string Data { get; set; }
    }
public class  Act
    {
        public JObject Entity;
    }
Forfait forfait = new Forfait()
            {
                Data = "data",
                Id = 99
            };
            Act act = new Act()
            {
                Entity = JObject.FromObject(forfait)
            };

            await client.Indices.CreateAsync("index", o => o
                .Map<Act>(m => m
                .AutoMap()

2. DynamicTemplates를 사용하지만 매핑에서 SearchAsYouType을 찾을 수 없습니다. 아직 Nest 7.4.1에 존재하지 않는 것 같습니다.

await client.Indices.CreateAsync("index", o => o
                .Map<Act>(m => m
                .DynamicTemplates(d =>d
                    .DynamicTemplate("stringassearch",dt => dt
                        .Match("entity.*")
                        .MatchMappingType("string")
                        .Mapping(ma =>ma
                            .)))));

3. Visitor를 사용하여 모든 문자열을 SearchAsYouType으로 지정

public class EveryStringIsASearchAsYouTypePropertyVisitor : NoopPropertyVisitor
    {
        public override IProperty Visit(PropertyInfo propertyInfo, ElasticsearchPropertyAttributeBase attribute)
        {
            if (propertyInfo.PropertyType == typeof(String))
                return new SearchAsYouTypeProperty();
            return null;
        }
    }
await client.Indices.CreateAsync("index", o => o
                .Map<Act>(m => m
                .AutoMap(new EveryStringIsASearchAsYouTypePropertyVisitor(),2)

모든 것이 실패했습니다

솔루션이 NEST.JsonNetSerializer에 있다는 느낌이 들지만 매핑에 사용되는 설정을 JObject 내부에 적용하지만 유용한 것을 찾을 수 없습니다.

Rob

2. DynamicTemplates를 사용하지만 매핑에서 SearchAsYouType을 찾을 수 없습니다. 아직 Nest 7.4.1에 존재하지 않는 것 같습니다.

당신이 맞습니다.에서 누락 된 것처럼 보이지만 유형에 SingleMappingSelector대한 지원을 추가 할이 확장 클래스를 사용하여 쉽게 해결할 수 있습니다 search_as_you_type.

static class MappingExtension
{
    public static IProperty SearchAsYouType<T>(this SingleMappingSelector<T> mappingSelector, 
        Func<SearchAsYouTypePropertyDescriptor<T>, ISearchAsYouTypeProperty> selector) where T : class
    => selector?.Invoke(new SearchAsYouTypePropertyDescriptor<T>());
} 

다음과 같이 동적 템플릿을 만들 수 있습니다.

var createIndexResponse = await client.Indices.CreateAsync("index", o => o
    .Map<Act>(m => m
        .AutoMap<Act>()
        .DynamicTemplates(d => d
            .DynamicTemplate("stringassearch", dt => dt
                .PathMatch("entity.*")
                .MatchMappingType("string")
                .Mapping(ma => ma.SearchAsYouType(s => s))))));

참고로 변경 Match(..)했습니다 PathMatch(..). 이것이 필요한 것 같습니다. 또한 Act정의를 다음 과 같이 변경 해야했습니다.

public class  Act
{
    public object Entity;
}

샘플 문서를 인덱싱 한 후이 인덱스 매핑이 생성되었습니다.

{
  "index": {
    "mappings": {
      "dynamic_templates": [
        {
          "stringassearch": {
            "path_match": "entity.*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "search_as_you_type"
            }
          }
        }
      ],
      "properties": {
        "entity": {
          "properties": {
            "data": {
              "type": "search_as_you_type",
              "max_shingle_size": 3
            },
            "id": {
              "type": "long"
            }
          }
        }
      }
    }
  }
}

다음 은 GH 문제입니다.

도움이되기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Elasticsearch (NEST)를 사용하여 C #에서 자동 제안을 수행하는 방법

분류에서Dev

Okta의 속성에서 프로필 매핑을 사용하는 방법

분류에서Dev

그룹 수의 동일성을 유지하면서 PHP를 사용하여 사용자를 그룹으로 무작위 매핑하는 방법

분류에서Dev

사용자 권한에 따라 Automapper를 사용하여 조건부로 속성을 매핑하는 방법

분류에서Dev

자바를 사용하여 Elasticsearch에서 문서의 필드 속성을 변경하는 방법?

분류에서Dev

C #의 다른 목록에서 ID를 기반으로 한 목록의 일부 속성을 매핑하는 우아한 방법

분류에서Dev

OpenACC를 사용하여 C에서 구조체의 2D 동적 배열을 수동으로 전체 복사하는 방법

분류에서Dev

Angularjs에서 $ comiple을 사용하여 동적으로 생성 된 요소의 너비를 얻는 방법

분류에서Dev

여러 개체의 속성을 동일한 속성 이름을 가진 단일 개체에 효율적으로 매핑하는 방법

분류에서Dev

NEST를 사용하여 elasticSearch에서 매핑을 만들 때 필드 무시

분류에서Dev

자바를 사용하여 Elasticsearch에서 필드 속성으로 문서를 검색하는 방법?

분류에서Dev

bind를 사용하여 Kivy Label의 텍스트 속성을 동적으로 업데이트하는 방법

분류에서Dev

jquery를 사용하여 CSS의 속성을 동적으로 변경하는 방법

분류에서Dev

jquery를 사용하여 CSS의 속성을 동적으로 변경하는 방법

분류에서Dev

자동 매퍼를 사용하여 목록에서 스칼라 속성으로 매핑하는 방법이 있습니까?

분류에서Dev

C #에서 스키마를 통해 동적으로 JSON의 유효성을 검사하는 방법

분류에서Dev

elasticsearch 자바 API를 사용하여 인덱스의 매핑을 포함하는 JSON 파일을로드하는 방법은 무엇입니까?

분류에서Dev

C에서 행렬을 동적으로 정의하는 방법

분류에서Dev

C #에서 Task를 사용하여 개체의 속성에 값을 할당하는 방법

분류에서Dev

JoinTable에서 EJB로 속성을 매핑하는 방법

분류에서Dev

JoinTable에서 EJB로 속성을 매핑하는 방법

분류에서Dev

AutoMapper를 사용하여 단일 속성을 컬렉션의 각 요소 속성에 매핑하는 방법은 무엇입니까?

분류에서Dev

DataTable을 사용하여 GridView에서 TextBox를 동적으로 채우는 방법

분류에서Dev

NEST C #에서 동적 탄력적 검색 쿼리를 작성하는 방법

분류에서Dev

CompletableFuture를 효율적으로 사용하여 입력 당 비동기 작업을 매핑하는 방법

분류에서Dev

elasticsearch에서 유형 매핑을 다른 유형으로 수정하는 방법

분류에서Dev

Automapper를 사용하여 DataTable을 DTO에 매핑하는 방법

분류에서Dev

React의 다른 배열 내에서 배열을 동적으로 매핑하는 방법은 무엇입니까?

분류에서Dev

Linq를 사용하여 XML 속성을 C #에서 XML로 업데이트하는 방법

Related 관련 기사

  1. 1

    Elasticsearch (NEST)를 사용하여 C #에서 자동 제안을 수행하는 방법

  2. 2

    Okta의 속성에서 프로필 매핑을 사용하는 방법

  3. 3

    그룹 수의 동일성을 유지하면서 PHP를 사용하여 사용자를 그룹으로 무작위 매핑하는 방법

  4. 4

    사용자 권한에 따라 Automapper를 사용하여 조건부로 속성을 매핑하는 방법

  5. 5

    자바를 사용하여 Elasticsearch에서 문서의 필드 속성을 변경하는 방법?

  6. 6

    C #의 다른 목록에서 ID를 기반으로 한 목록의 일부 속성을 매핑하는 우아한 방법

  7. 7

    OpenACC를 사용하여 C에서 구조체의 2D 동적 배열을 수동으로 전체 복사하는 방법

  8. 8

    Angularjs에서 $ comiple을 사용하여 동적으로 생성 된 요소의 너비를 얻는 방법

  9. 9

    여러 개체의 속성을 동일한 속성 이름을 가진 단일 개체에 효율적으로 매핑하는 방법

  10. 10

    NEST를 사용하여 elasticSearch에서 매핑을 만들 때 필드 무시

  11. 11

    자바를 사용하여 Elasticsearch에서 필드 속성으로 문서를 검색하는 방법?

  12. 12

    bind를 사용하여 Kivy Label의 텍스트 속성을 동적으로 업데이트하는 방법

  13. 13

    jquery를 사용하여 CSS의 속성을 동적으로 변경하는 방법

  14. 14

    jquery를 사용하여 CSS의 속성을 동적으로 변경하는 방법

  15. 15

    자동 매퍼를 사용하여 목록에서 스칼라 속성으로 매핑하는 방법이 있습니까?

  16. 16

    C #에서 스키마를 통해 동적으로 JSON의 유효성을 검사하는 방법

  17. 17

    elasticsearch 자바 API를 사용하여 인덱스의 매핑을 포함하는 JSON 파일을로드하는 방법은 무엇입니까?

  18. 18

    C에서 행렬을 동적으로 정의하는 방법

  19. 19

    C #에서 Task를 사용하여 개체의 속성에 값을 할당하는 방법

  20. 20

    JoinTable에서 EJB로 속성을 매핑하는 방법

  21. 21

    JoinTable에서 EJB로 속성을 매핑하는 방법

  22. 22

    AutoMapper를 사용하여 단일 속성을 컬렉션의 각 요소 속성에 매핑하는 방법은 무엇입니까?

  23. 23

    DataTable을 사용하여 GridView에서 TextBox를 동적으로 채우는 방법

  24. 24

    NEST C #에서 동적 탄력적 검색 쿼리를 작성하는 방법

  25. 25

    CompletableFuture를 효율적으로 사용하여 입력 당 비동기 작업을 매핑하는 방법

  26. 26

    elasticsearch에서 유형 매핑을 다른 유형으로 수정하는 방법

  27. 27

    Automapper를 사용하여 DataTable을 DTO에 매핑하는 방법

  28. 28

    React의 다른 배열 내에서 배열을 동적으로 매핑하는 방법은 무엇입니까?

  29. 29

    Linq를 사용하여 XML 속성을 C #에서 XML로 업데이트하는 방법

뜨겁다태그

보관